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語句中查詢某字段中含有某字串的語句怎麼寫?
1 建立測試表,create table test student id number,remark varchar2 20 2 插入測試資料 insert into test student values 1001,1014133 insert into test student values 1...
sql語句中的符號是什麼意思,sql 語句中 符號是什麼意思?
以下希望對你有所幫助。儘管宣告字串常量的標準方法通常都很方便,但是如果字串包含很多單引號或者反斜槓,那麼理解字串的內容可能就會變得很苦澀,因為每個單引號都要加倍。為了讓這種場合下的查詢更具可讀性,postgresql 允許另外一種稱作 美元符包圍 的字串常量宣告辦法。一個通過美元符包圍宣告的字串常量...
解釋sql語句中的不等於,解釋SQL語句中的“不等於”
erp小 sql中有兩種方式表示不等於,一種是 不含引號 另一種是 不含引號 用法是一樣的。1 建立測試表,插入資料 create table test id int,name varchar 10 insert into test values 1,張三 insert into test valu...