SQL 查找是否"存在",別再 COUNT 了,很耗費時間的
點擊上方SQL數(shù)據(jù)庫開發(fā),關(guān)注獲取SQL視頻教程
SQL專欄
SQL數(shù)據(jù)庫基礎(chǔ)知識匯總SQL數(shù)據(jù)庫高級知識匯總根據(jù)某一條件從數(shù)據(jù)庫表中查詢 『有』與『沒有』,只有兩種狀態(tài),那為什么在寫SQL的時候,還要SELECT COUNT(*) 呢?來源:網(wǎng)絡(luò),未查到原作者
無論是剛?cè)氲赖某绦騿T新星,還是精湛沙場多年的程序員老白,都是一如既往的COUNT
目前多數(shù)人的寫法
多次REVIEW代碼時,發(fā)現(xiàn)如現(xiàn)現(xiàn)象:
業(yè)務(wù)代碼中,需要根據(jù)一個或多個條件,查詢是否存在記錄,不關(guān)心有多少條記錄。普遍的SQL及代碼寫法如下
##### SQL寫法:
SELECT count(*) FROM table WHERE a = 1?AND b = 2
##### Java寫法:
int?nums = xxDao.countXxxxByXxx(params);
if?( nums > 0?) {
????//當(dāng)存在時,執(zhí)行這里的代碼
} else?{
????//當(dāng)不存在時,執(zhí)行這里的代碼
}是不是感覺很OK,沒有什么問題
優(yōu)化方案
推薦寫法如下:
##### SQL寫法:
SELECT 1?FROM table WHERE a = 1?AND?b = 2?LIMIT 1
##### Java寫法:
Integer exist = xxDao.existXxxxByXxx(params);
if?( exist != NULL?) {
//當(dāng)存在時,執(zhí)行這里的代碼
} else?{
//當(dāng)不存在時,執(zhí)行這里的代碼
}SQL不再使用count,而是改用?LIMIT 1,讓數(shù)據(jù)庫查詢時遇到一條就返回,不要再繼續(xù)查找還有多少條了
業(yè)務(wù)代碼中直接判斷是否非空即可
——End——
后臺回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨
后臺回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。
推薦閱讀
- 危險!在國內(nèi),自己私下使用VPN是否違法?
- 如何寫出讓同事無法維護(hù)的代碼?
- 精心整理了一套Oracle日常巡檢腳本,速速收藏!
- 敲代碼時,程序員戴耳機究竟在聽什么?
- 送你一份 SQL 進(jìn)階技巧
評論
圖片
表情
