sql語句中條件查詢in like 的效率

2021-07-16 17:46:06 字數 544 閱讀 6688

1、如果條件欄位都是非索引字段,那麼效率都差不多,就看結果大小。

2、有差別的在於條件欄位是索引欄位時:

「=」在索引的情況下都會進行索引掃瞄,所以效率總是高的。

「like」當模糊查詢為右模糊,比如'abc%'時,掃瞄索引,高效。當模糊查詢含左模糊時,比如'%abc',進行全表掃瞄,低效。

「in」的作用等同於or,也是進行索引掃瞄,高效。

另外,「in」還可以連線查詢結果集,這時往往會和exists做比較。

a、select * from t1 where f1 in(select f1 from t2 where t2.fx='x'),其中子查詢的where裡的條件不受外層查詢的影響,這類查詢一般情況下,自動優化會轉成exist語句,也就是效率和exist一樣。

b、select * from t1 where f1 in(select f1 from t2 where t2.fx=t1.fx),其中子查詢的where裡的條件受外層查詢的影響,這類查詢的效率要看相關條件涉及的字段的索引情況和資料量多少,一般效率不如exists,資料量大時,效果就更加明顯。

sql查詢語句中

sql查詢語句中select t.status,t.rowid from person t where t.status 2,此處查詢的是status不等於2的記錄,並過濾掉status為null的記錄。注意 此處不管status是integer型別還是long型別,都會過濾掉status為null...

sql語句中or條件有無括號舉例!!

select from school where class 1 and like 男 or birthday like 1 or在括號裡面,結果集是班級1後再加過濾條件是男生或生日在1月份得到的 select from school where class 1 and like 男 or birt...

SQL查詢語句中的 limit offset

經常用到在資料庫中查詢中間幾條資料的需求 比如下面的sql語句 selete from testtable limit 2,1 selete from testtable limit 2 offset 1 注意 1.資料庫資料計算是從0開始的 2.offset x是跳過x個資料,limit y是選取...