2009年3月29日 星期日

SQL查詢時的執行順序

前陣子公司常常為了資料庫煩惱不已,因為查詢的時間實在是太久了!
就好比開個網頁要等個幾十秒難以讓人忍受。

而會發生這個問題即來自於 table 的 join 效率不彰,大家都知道當兩個 TABLE(A、B) 要 JOIN 時,
其 JOIN 的總數量是 A的總筆數 乘以 B的總筆數
當 JOIN 時如果兩個 TABLE 皆以數千萬筆資料來擷取所需的資料是多麼可怕的一件事。

因此 SQL 語法的調校就變得非常的重要,如果能夠在 JOIN 前先過濾出所需的資料,那麼其效能理論上應該可以好很多。
所以不材就又翻了一下之前上課的課本,裡面提到 SQL 語法執行時的順序,其查詢時如下圖所示:

SQL查詢執行順序


圖片來源:Modern Database Management 6th Ed Page.288


由上圖可以知道查詢時的步驟由上而下依次執行,而 WHERE 當中的執行順序則為由左至右依序執行。

2 則留言:

  1. 汪老師說有過…
    只要用要用資料庫,
    這張圖,到死都要記得…

    回覆刪除
  2. 是啊!但是我在下SQL的時候早就已經都忘了。
    還好有回去翻書才重拾回憶啊~~~

    回覆刪除