1紊选、如果條件字段都是非索引字段,那么效率都差不多,就看結(jié)果大小啼止。
2、有差別的在于條件字段是索引字段時(shí):
“=”在索引的情況下都會(huì)進(jìn)行索引掃描,所以效率總是高的兵罢。
“l(fā)ike”當(dāng)模糊查詢?yōu)橛夷:?比如'abc%'時(shí),掃描索引,高效族壳。當(dāng)模糊查詢含左模糊時(shí),比如'%abc',進(jìn)行全表掃描,低效。
“in”的作用等同于or,也是進(jìn)行索引掃描,高效趣些。
另外,“in”還可以連接查詢結(jié)果集,這時(shí)往往會(huì)和exists做比較仿荆。
a、select * from t1 where f1 in(select f1 from t2 where t2.fx='x'),其中子查詢的where里的條件不受外層查詢的影響,這類查詢一般情況下,自動(dòng)優(yōu)化會(huì)轉(zhuǎn)成exist語(yǔ)句,也就是效率和exist一樣。
b拢操、select * from t1 where f1 in(select f1 from t2 where t2.fx=t1.fx),其中子查詢的where里的條件受外層查詢的影響,這類查詢的效率要看相關(guān)條件涉及的字段的索引情況和數(shù)據(jù)量多少,一般效率不如exists,數(shù)據(jù)量大時(shí),效果就更加明顯锦亦。