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

2021-09-22 21:16:52 字數 931 閱讀 4781

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語句中as的意思是什麼,SQL語句中AS是什麼意思?

as一般用在兩個地方,一個是query的時候,用來重新指定返回的column 名字如 一個table 有個column叫 id,我們的query是 select idfrom table1.但是如果你不想叫id了,就可以重新命名,如叫systemid 就可以這樣寫 select idas syste...

在SQL查詢語句中,怎樣實現兩個兩個條件?(兩個條件之間沒聯絡)

update biao set chengji chengji case when chengji 80 then chengji 0.05 else chengji 0.04 end 沒有什bai麼先後順序 du,是同時進zhi 行的,小於 dao80的增加4 而大回於80的,不會再答加5 upd...

sql語句怎樣查詢範圍,SQL語句怎樣查詢一個範圍

查詢範圍在sql語句中需要用between and或者 及 語句。1 建立測試表 插入資料 create table test id int,name varchar2 20 insert into test values 1,張三 insert into test values 2,李四 inse...