在專案開發的時候 特別是遇到資料庫表中資料比較多的時候 sql語句的執行效率優先順序是非常高的,最近本人寫了一條sql 800萬條資料中執行了10秒,最後定位出來是在使用 where lower(t.commit) = lower(#)的時候執行效率特別慢 ;再次 後面會去專門分析 oracle中 自帶函式的使用以及原理,這裡就不做分析了,先來理解一下sql的執行順序 之前寫sql的時候拉住**就亂寫,也不管執行效率,自存經過了這件事情之後 才下定決心好好研究sql效能方面的問題。
sql select 執行順序:
1.from 子句用來組裝不同資料來源的資料
2.where字句基於 指定的條件對記錄進行篩選 (自右向左 所以 and條件一次能過濾多條記錄的放在右側)
3.group by字句將資料劃分成多個組
4.使用聚合函式進行計算
5.使用h**ing字句篩選分組
6.計算所有的表示式
7.select 查詢字段(盡量不要用select *)
8.使用order by 對結果集進行排序(在from表有別名的時候 可能有的時候由於sql執行的順序問題 用到別名的時候可能會報錯 後面會補充資料庫別名的使用)
sql語言不同於其他程式語言的最明顯特徵就是處理**的順序。在大多資料庫語言中,**按編碼順序被處理。但在sql中,第乙個被處理的字句是from,而不是第乙個出現的select
注意:在使用別名的時候 可能有的條件會出錯 這裡和sql執行的順序有關係 後續會舉例進行驗證
SQl語句執行順序
在程式設計的時候,每個語言的一行 都是有執行順序,比如從右往左或者從左往右,在大部分的時候是不影響,但有些時候,執行順序卻有非常大的影響。int i 0 if i 0 i 0 if i 0 i 0 第一種情況會執行,第二種情況不會執行,因為判斷是從右往左判斷,條件不成立馬上就結束,第二種情況先判斷i...
SQL語句執行順序
1 from 子句,組裝來自不同資料來源的資料 2 where 子句,基於指定的條件對記錄進行篩選 3 group by 子句,將資料劃分為多個分組 4 使用聚合函式進行計算 5 使用 h ing 子句篩選分組 6 計算所有的表示式 7 使用 order by 對結果集進行排序 select dis...
SQL語句執行順序
from或join會第乙個執行,確定乙個整體的資料範圍.如果要join不同表,可能會生成乙個臨時table來用於 下面的過程。總之第一步可以簡單理解為確定乙個資料來源表 含臨時表 我們確定了資料 where語句就將在這個資料來源中按要求進行資料篩選,並丟棄不符合要求的資料行,所有的篩選col屬性 只...