溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL查找怎么優(yōu)化

發(fā)布時間:2022-01-15 10:30:55 來源:億速云 閱讀:135 作者:iii 欄目:云計算

這篇文章主要講解了“SQL查找怎么優(yōu)化”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“SQL查找怎么優(yōu)化”吧!

目前多數人的寫法

多次REVIEW代碼時,發(fā)現如現現象:

業(yè)務代碼中,需要根據一個或多個條件,查詢是否存在記錄,不關心有多少條記錄。普遍的SQL及代碼寫法如下
##### SQL寫法:
SELECT count(*) FROM table WHERE a = 1 AND b = 2

##### Java寫法:
int nums = xxDao.countXxxxByXxx(params);
if ( nums > 0 ) {
    //當存在時,執(zhí)行這里的代碼
} else {
    //當不存在時,執(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 ) {
//當存在時,執(zhí)行這里的代碼
} else {
//當不存在時,執(zhí)行這里的代碼
}

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

COUNT()有兩個非常不同的作用:它可以統計某個列值的數量,也可以統計行數。在統計列值時要求列值是非空的(不統計NULL)。如果在COUNT()的括號中定了列或者列表達式,則統計的就是這個表達式有值的結果數。......COUNT()的另一個作用是統計結果集的行數。當MySQL確認括號內的表達式值不可能為空時,實際上就是在統計行數。最簡單的就是當我們使用COUNT(*)的時候,這種情況下通配符*并不像我們猜想的那樣擴展成所有的列,實際上,他會忽略所有列而直接統計所有的行數。

感謝各位的閱讀,以上就是“SQL查找怎么優(yōu)化”的內容了,經過本文的學習后,相信大家對SQL查找怎么優(yōu)化這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sql
AI