自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL查“存在”不靠COUNT,揭秘高效檢索法

數(shù)據(jù)庫 其他數(shù)據(jù)庫
SQL不再使用count,而是改用LIMIT 1,讓數(shù)據(jù)庫查詢時遇到一條就返回,不要再繼續(xù)查找還有多少條了,業(yè)務(wù)代碼中直接判斷是否非空即可。

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

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

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

多次REVIEW代碼時,發(fā)現(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ù)代碼中直接判斷是否非空即可。

總結(jié)

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

責(zé)任編輯:武曉燕 來源: 一安未來
相關(guān)推薦

2020-12-03 09:05:38

SQL代碼方案

2020-07-28 17:08:43

SQL數(shù)據(jù)庫

2012-04-20 12:30:23

2023-08-11 09:00:00

2025-04-09 09:10:00

開發(fā)ViteVue

2009-07-06 18:18:41

SQL Server全

2010-10-20 10:55:54

SQL Server全

2011-12-26 14:11:47

三星Android

2010-11-10 14:18:15

SQL SERVER全

2014-08-04 09:30:43

170

2011-09-16 13:15:38

SQL Server優(yōu)化

2010-05-28 18:53:36

配置SVN1.4.5

2010-01-04 15:27:31

ADO.NET SQL

2015-07-13 11:39:25

SphinxSQL

2010-07-21 09:58:21

SQL Server全

2021-07-13 07:52:03

SQL面試COUNT(*)

2012-08-06 10:09:52

2021-07-29 11:00:43

Hologres QPS 在線服務(wù)

2024-06-05 08:14:26

SpringElasticsea人臉數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號