sql語句優化方法30例
在sql語句優化過程中,我們經常會用到hint,現總結一下在sql優化過程中常見oracle hint的用法:
1. /*+all_rows*/
表明對語句塊選擇基於開銷的優化方法,並獲得最佳吞吐量,使資源消耗最小化.
例如:select /*+all+_rows*/ emp_no,emp_nam,dat_in from bsempms where emp_no=』scott』;
2. /*+first_rows*/
表明對語句塊選擇基於開銷的優化方法,並獲得最佳響應時間,使資源消耗最小化.
例如:select /*+first_rows*/ emp_no,emp_nam,dat_in from bsempms where emp_no=』scott』;
3. /*+choose*/
表明如果資料字典中有訪問表的統計資訊,將基於開銷的優化方法,並獲得最佳的吞吐量;
表明如果資料字典中沒有訪問表的統計資訊,將基於規則開銷的優化方法;
例如:select /*+choose*/ emp_no,emp_nam,dat_in from bsempms where emp_no=』scott』;
4. /*+rule*/
表明對語句塊選擇基於規則的優化方法.
例如:select /*+ rule */ emp_no,emp_nam,dat_in from bsempms where emp_no=』scott』;
5. /*+full(table)*/
表明對錶選擇全域性掃瞄的方法.
例如:select /*+full(a)*/ emp_no,emp_nam from bsempms a where emp_no=』scott』;
6. /*+rowid(table)*/
提示明確表明對指定表根據rowid進行訪問.
例如:select /*+rowid(bsempms)*/ * from bsempms where rowid>=』aaaaaaaaaaaaaa』
and emp_no=』scott』;
7. /*+cluster(table)*/
提示明確表明對指定表選擇簇掃瞄的訪問方法,它只對簇物件有效.
例如:select /*+cluster */ bsempms.emp_no,dpt_no from bsempms,bsdptms
where dpt_no=』tec304′ and bsempms.dpt_no=bsdptms.dpt_no;
8. /*+index(table index_name)*/
表明對錶選擇索引的掃瞄方法.
例如:select /*+index(bsempms ***_index) use ***_index because there are fewmale bsempms */ from bsempms where ***=』m';
9. /*+index_asc(table index_name)*/
表明對錶選擇索引公升序的掃瞄方法.
例如:select /*+index_asc(bsempms pk_bsempms) */ from bsempms where dpt_no=』scott』;
10. /*+index_combine*/
為指定表選擇位圖訪問路經,如果index_combine中沒有提供作為引數的索引,將選擇出位圖索引的布林組合方式.
例如:select /*+index_combine(bsempms sal_bmi hiredate_bmi)*/ * from bsempms
where sal<5000000 and hiredate
Oracle SQL語句優化
1,建表時 1 建立主鍵 2 建立索引 3 如果表資料量很大考慮建立分割槽 4 可以使用number型別的就不適用varchar2,這是因為引擎在處理查詢和連線時會逐個比較字串中每乙個字元,而對於數字型而言只需要比較一次就夠了。2,建立索引注意事項 1 首先應考慮在 where 及 order by...
Oracle SQL語句優化技術分析
操作符優化 in操作符 用in寫出來的sql的優點是比較容易寫及清晰易懂,這比較適合現代軟體開發的風格。但是用in的sql效能總是比較低的,從oracle執行的步驟來分析用in的sql與不用in的sql有以下區別 oracle 試圖將其轉換成多個表的連線,如果轉換不成功則先執行in裡面的子查詢,再查...
Oracle SQL語句優化技術 解讀實戰技巧
在from後面的表中的列表順序會對sql執行效能影響,在沒有索引及oracle沒有對錶進行統計分析的情況下oracle會按表出現的順序進行鏈結。一.sql語言的使用 1.in 操作符 用in寫出來的sql的優點是比較容易寫及清晰易懂,這比較適合現代軟體開發的風格。但是用in的sql效能總是比較低的,...