這篇文章主要介紹了SQL判斷是斷否否"存在(zai)",還在用 count 操作?很耗時(shí)的(de)!本文通過(guò)實(shí)例代碼給大家介紹的存還操作非常詳細,對大家的斷否學(xué)習或工作具有一定的參考借鑒價(jià)值,需要的存還操作朋友可以參考下
無(wú)論是剛入道的程序員新星,還是存還操作精(jing)湛沙場(chǎng)多年的程序員ヽ(′ー`)ノ老白,都是??斷??否一如既往的count.
目前多數人的寫(xiě)法
多次 review 代碼時(shí),發(fā)現如現現象:
業(yè)務(wù)代碼中,存還操作需要??根據一個(gè)或多個(gè)條件,斷否查詢(xún)是存還操作否存在記錄,不關(guān)心有多少條記錄。斷否普遍的存還操作SQL及代碼??寫(xiě)法(fa)如下
SQL寫(xiě)法:
Java寫(xiě)法:
int nums = xxD(′;д;`)ao.countXxxxByXxx(params);
if ( nums > 0 ) {
//當存在時(shí),執行這里的斷否代碼
} else {
//當不存(cun)在時(shí),執行這里的代碼
}
是不是感覺(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.ex(/ω\)istXxxxByXxx(params);
if ( exist != NULL ) {
//當存在時(shí),執行這里的代碼
} else {
//當不存在時(shí),執行這里的代碼
}
SQL不再??使用count,而是改用LIMIT 1,讓數據庫查詢(xún)時(shí)遇到一條就返回,不要再繼續查找還有多少條了
業(yè)務(wù)代碼中直接判斷是否非空即可
總結
根據查詢(xún)條件查出來(lái)的條數越多,性能提升(/ω\)的越明顯,在某些情況下,還(°o°)可以減少聯(lián)合索引的創(chuàng )建。
來(lái)源:腳本之家
鏈接:https://www.jb51.net/article/2( ?ヮ?)02415.htm


網(wǎng)站二維碼
導航
電話(huà)
短信
咨詢(xún)
地圖
分享