編者注:當講到了性能優化和案例方面的東西,就要想到如何從開發人員的角度進行了理解,認識SQL是如何執行,以及如何學習高級的SQL,這篇文章對以上問題做了簡單小結。
▲ITPUB版主丁俊
▲全面的Oracle SQL知識體系
談到認識SQL的邏輯和物理執行順序邏輯順序時,丁俊提到兩點:一、理解SQL的邏輯執行順序,可以大幅度減少錯誤SQL的編寫。二、理解SQL的邏輯執行順序,可以深化對SQL的認識,有利於處理更加復雜的業務邏輯。
▲認識SQL的邏輯和物理執行順序邏輯順序
能夠用SQL解決的就不要用PLSQL了,而PLSQL是SQL的很好的補充。
▲認識SQL的邏輯和物理執行順序 邏輯順序續
SQL的物理執行順序就是實際的EXECUTION PATH.物理執行順序依賴於CBO優化器組件,非常復雜。
▲認識SQL的邏輯和物理執行順序 CBO簡介
▲認識SQL的邏輯和物理執行順序 物理執行順序案例
▲從分析函數學習談如何學SQL
從文檔提取分析函數特點:
分析函數依賴於分析子句對當前行所屬的分組進行分析函數計算。用於復雜的行間和累計值的計算。
分析函數與組函數不同。根據1的特點,分析函數同時能計算分組值,並且還能保留當前行的其他列值。--重要特性
分析函數分類:排名(rank,dense_rank,row_number,first/last,ntile等)、聚合報表函數 (sum,count等以及ratio_to_report)、行比較(lead/lag,first_value/last_value)、數學統計 (stddev,var_pop等)等函數。
從分析函數學習談如何學SQL總結
分析函數可以實現復雜的行間計算功能,諸如累計值,行間比較,報表統計等功能。學習分析函數要把握每種分析函數的特點,並掌握分析函數中的關鍵元素 的聯系區別:比如ROWS與RANGE區別,window子句與partition、order by的關系,掌握窗口、當前行的概念。此外Oracle還支持自定義的聚集函數,可以實現分析函數的功能,可以參考Data Cartridge Developer‘s Guide。