sql語句中條件查詢裡inlike及的效率怎麼樣

時間 2021-10-14 19:02:55

1樓:突擊手覓患

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,資料量大時,效果就更加明顯。

2樓:陽光上的橋

like最差,特別是以%(有的資料庫是*)開頭的匹配,是無法進行索引的,只有順序掃描。

in和=的本質是一樣的,效率相同,都是走索引。

當然,如果進行判斷的那個欄位沒有建立索引,那麼都是順序查詢,效率完全一樣。

3樓:匿名使用者

like很差的,速度最慢

in也非常差,in的本質是n個=,中間用or連起來

萬幸的是in能用exists代替,exists的效率比in提高了不止一點點,我曾經將in換為exists,查詢的效率從11分鐘減少到15秒,所以能用exists的儘量不要用in

sql分段查詢語句怎麼寫,SQL語句中,按時間段間隔查詢怎麼寫?

什麼庫?sqlserver access oracle?access的話 還是在表裡多設定一個欄位讓他自動增減吧!sqlserver的話 select identity int,1,1 rownum,name into temp from 表 select from temp where rownu...

sql語句中,SQL語句中USE

三歲喝酒 use pubs 選擇 名字 pubs 的資料庫 select title id from sales where title id in 查詢欄位title id符合號內限定條件的表sales的 title id 列 select title id from titles where t...

sql連線查詢語句中from子句中表的順序有什麼要求

嚴格上來說是沒有要求的,他們有兩種寫法,一種是ansi sql,一種是trans sql.ansi sql select from table1,table2,table3 where table1.id table2.id and table3.id table2.pid trans sql se...