SQL中的執行順序:
一般提到這個都是說在一個SQL語句中,各關鍵字的執行先後順序;知曉了這個,便可以透過在不同的關鍵字處進行條件的限制以達到優化SQL的目的,提升執行的效率。
基本的順序為:
1
from > on > join > where > group by >having > distinct > order by > select > top
EXISTS的用法:
其作用和in的作用一致,但在執行效率上有所差異,
- 當內表小外表大時,
EXISTS的效率<in的效率; - 當內表大外表小時,
EXISTS的效率>in的效率。
總結一下就是,內表小用in,外表小用EXISTS。 (內表小用in,內表大用exists)
EXISTS 執行顺序
1
2
3
4
select *
from a
where a.status=1 and
exists (select orderid from b where a.orderid=b.orderid)
exists執行順序:
- 首先
exists回傳的是true或false - 查詢一條a的數據,會去執行
exists,若返回true則存在結果集中,再執行a的下一數據,直到a的數據執行完 exists裡的資料是怎麼執行的呢?只要滿足條件就會回傳true,沒必要把b表中的資料都查詢一遍