最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL判斷是否"存在",還在用 count 操作?很耗時(shí)的!

 更新時(shí)間:2020年12月18日 09:57:52   作者:java面試筆試  
這篇文章主要介紹了SQL判斷是否"存在",還在用 count 操作?很耗時(shí)的!本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

根據(jù)某一條件從數(shù)據(jù)庫(kù)表中查詢 『有』與『沒(méi)有』,只有兩種狀態(tài),那為什么在寫(xiě)SQL的時(shí)候,還要select count(*) 呢?

無(wú)論是剛?cè)氲赖某绦騿T新星,還是精湛沙場(chǎng)多年的程序員老白,都是一如既往的count.

目前多數(shù)人的寫(xiě)法

多次 review 代碼時(shí),發(fā)現(xiàn)如現(xiàn)現(xiàn)象:

業(yè)務(wù)代碼中,需要根據(jù)一個(gè)或多個(gè)條件,查詢是否存在記錄,不關(guān)心有多少條記錄。普遍的SQL及代碼寫(xiě)法如下

SQL寫(xiě)法:

SELECT count(*) FROM table WHERE a = 1 AND b = 2

Java寫(xiě)法:

int nums = xxDao.countXxxxByXxx(params);
if ( nums > 0 ) {
 //當(dāng)存在時(shí),執(zhí)行這里的代碼
} else {
 //當(dāng)不存在時(shí),執(zhí)行這里的代碼
}

是不是感覺(jué)很OK,沒(méi)有什么問(wèn)題

優(yōu)化方案

推薦寫(xiě)法如下:

SQL寫(xiě)法:

SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1

Java寫(xiě)法:

Integer exist = xxDao.existXxxxByXxx(params);
if ( exist != NULL ) {
 //當(dāng)存在時(shí),執(zhí)行這里的代碼
} else {
 //當(dāng)不存在時(shí),執(zhí)行這里的代碼
}

SQL不再使用count,而是改用LIMIT 1,讓數(shù)據(jù)庫(kù)查詢時(shí)遇到一條就返回,不要再繼續(xù)查找還有多少條了

業(yè)務(wù)代碼中直接判斷是否非空即可

總結(jié)

根據(jù)查詢條件查出來(lái)的條數(shù)越多,性能提升的越明顯,在某些情況下,還可以減少聯(lián)合索引的創(chuàng)建。

到此這篇關(guān)于SQL判斷是否"存在",還在用 count 操作?很耗時(shí)的!的文章就介紹到這了,更多相關(guān)SQL判斷是否"存在"內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

东乌珠穆沁旗| 四平市| 宝应县| 班戈县| 玛沁县| 贵南县| 高雄市| 子长县| 江口县| 桃江县| 钟祥市| 富阳市| 西华县| 伊春市| 托克逊县| 渭南市| 民乐县| 射洪县| 资溪县| 武川县| 麻栗坡县| 洛阳市| 广水市| 沂水县| 潞城市| 澄迈县| 台安县| 治多县| 宝清县| 合作市| 如东县| 华宁县| 土默特右旗| 九江县| 宁强县| 忻州市| 金乡县| 芒康县| 苏尼特左旗| 赣州市| 吉首市|