Posted on 2008-08-12 14:23
Prayer 閱讀(140)
評論(0) 編輯 收藏 引用 所屬分類:
數據庫,SQL
如果在SELECT里用了IN,
例如:select * from abc where a1 in (select a1 from ccc)
那么,在IN里SELECT語句是不是會自動運行很多次,還是只運行一次。
能說說這句的運行機制嗎?
這個語句只運行一次,先返回select a1 from ccc的記錄集,再比較abc.a1是不是在這個記錄集里,效率不如:
select * from abc where exists (select a1 from ccc where ccc.a1=abc.a1)
最好用
select abc.* from abc,ccc where ccc.a1=abc.a1
同意樓上 、 但是建議在子查詢里 加上 去除重復項的子句。
select abc.* from abc,ccc where ccc.a1 *= abc.a1
NO.6 作者: Jameszht
如果ccc中的a1有重復可用
select abc.* from abc,(select distinct a1 from ccc) c where c.a1=