2019-02-14
閱讀量:
750
SQL語句優(yōu)化
問題描述:
要判斷某一條數(shù)據(jù)的某一個字段的值,是在sql中限制條件然后判斷數(shù)量、還是直接檢索這個字段,哪個效率最高?
比如:A表中,要判斷id=1的數(shù)據(jù)flag是1還是0(flag的值只能是1或0)。
以下兩個sql哪個效率高?
1.在sql中限制條件然后判斷數(shù)量
select count(*) from A where id = 1 and flag = 1;
2.直接檢索這個字段
select flag from A where id = 1;
這個表的數(shù)據(jù)量和字段數(shù)量、數(shù)據(jù)庫類型對結(jié)果有影響嗎?
解決方法:
id是主鍵的話,這兩個寫法的效率基本是一樣的,具體要看sql語句的執(zhí)行計劃。
從sql語句和業(yè)務(wù)邏輯的對應(yīng)關(guān)系上,寫法2更好一點。
盡量減少SELECT COUNT(*) FROM tablename WHERE COL = 'value’ 這種查詢;
非要用count的話,盡量count(index),對索引進行count。
如果表中有類似標志位(比如是否邏輯刪除)的字段,那么在其上建立一個索引,會把count(*)的速度提高數(shù)倍。






評論(0)


暫無數(shù)據(jù)
推薦帖子
0條評論
0條評論
0條評論
1條評論