Oracle sql 最佳化小結

來源:互聯網
上載者:User

對於sql最佳化,從實際工作經驗出發,總結如下:

1)、where過濾部分,等式左邊不要帶任何計算和嵌套函數,想辦法等價替換,在等式右邊去做變動;

2)、能手動計算的部分,手動算好寫上固定的值,不要寫一個運算式在sql裡,讓程式每次去重算;

3)、3個及以上大表關聯,慢到跑個30分鐘都不出結果,最直接簡單的方法是建一個暫存資料表,拆分多表關聯為多個2表關聯的等價sql;

4)、對於非常慢的sql,可以嘗試重新擷取源表資訊,擷取新的執行計畫;

5)、在實現邏輯時,對於有排序操作的關鍵字(order by/group by/distinct/union/等)要敏感,看看是不是在實現邏輯的同時能避免這些排序操作;

6)、避免自己寫函數實現功能,應使用Oracle內建的函數;

7)、不要千篇一律的使用左串連(左串連在實現功能時,有一個好處,那就是不用管那麼多,反正不會丟資料),應該站在業務的角度去分析資料,是不是一定要左串連,畢竟外串連是很耗效能的;

8)、對於大資料,可以採取分區+並行的技術,對於分區,在實現方式上,要考慮到怎麼為表自動添加分區和時間久了怎樣自動drop掉前面的分區;

9)、索引是把雙刃劍,使用時要測試好,並能考慮到後期要手動維護、索引失效等等負面問題;

10)、強制Hint,人為改變Oracle執行計畫;

11)、多分析執行計畫,來判斷sql的優劣,為了避免緩衝的影響,將不同的測試sql均執行多次;

12)、對於sql的整體把握,一定要知道源表資料量大概為多少,最終返回的結果集會多少,不然最佳化無從談起,因為所有的技術和結論都是因資料量的大小變化的;

13)、以上均為開發人員在實現層面的最佳化,更根本的在於前期的設計和架構;

本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.