按照某那條件從數(shù)據(jù)庫附注查看 『有』與『不會(huì)』,僅剩幾種狀態(tài),那難道在寫SQL得時(shí)候,就要select count(*) 呢?
不管剛?cè)氲赖贸绦騿T新星,畢竟精良沙場(chǎng)三十多年得程序員老白,都是一如既往得count.
目前少數(shù)人得讀音
曾多次 review 代碼時(shí),發(fā)覺常房現(xiàn)象:
業(yè)務(wù)代碼中,必須按照這個(gè)或十多個(gè)條件,查看除非隱含記錄,不關(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)隱含時(shí),執(zhí)行者那兒得代碼
} else {
//利穆縣隱含時(shí),執(zhí)行者那兒得代碼
}
是不是感覺很OK,不會(huì)什么樣問題
優(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)隱含時(shí),執(zhí)行者那兒得代碼
} else {
//利穆縣隱含時(shí),執(zhí)行者那兒得代碼
}
SQL無須選用count,所以換用LIMIT 1,讓數(shù)據(jù)庫查看時(shí)碰上那條就抵達(dá),不要再繼續(xù)檢索有甚么條了
業(yè)務(wù)代碼中直接判斷除非非空亦可
總結(jié)
按照查看條件確知得條數(shù)越多,性能大幅提升拜翁縣大幅度,在這類情況下,還可減低聯(lián)合體索引得創(chuàng)辦。
更多文章資訊:感謝分享特別999la感謝原創(chuàng)分享者/article/
感謝:感謝分享特別999la感謝原創(chuàng)分享者/shujukuwz/884764ab9cb1868e4582.html