Home [SQL] SQL語句的執行順序、EXISTS執行順序、EXISTS和IN執行效率
Post
Cancel

[SQL] SQL語句的執行順序、EXISTS執行順序、EXISTS和IN執行效率

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執行順序:

  1. 首先exists 回傳的是truefalse
  2. 查詢一條a的數據,會去執行exists,若返回true則存在結果集中,再執行a的下一數據,直到a的數據執行完
  3. exists 裡的資料是怎麼執行的呢?只要滿足條件就會回傳true,沒必要把b表中的資料都查詢一遍

数据库及sql相关知识汇总(sql执行顺序,EXISTS的用法)
EXISTS 执行顺序

This post is licensed under CC BY 4.0 by the author.