MySQL™ 參考手冊(優化SQL語句)

優化SQL語句

數據庫應用程序的核心邏輯是經過SQL語句執行的,不管是直接經過解釋器發出,仍是經過API在後臺提交。本節中的調優指南有助於加快各類MySQL應用程序的速度,這些指導原則包括讀取和寫入數據的SQL操做、一般SQL操做的幕後開銷以及在特定場景(如數據庫監視)中使用的操做。web

優化SELECT語句

SELECT語句的形式的查詢執行數據庫中的全部查找操做,優化這些語句是首要任務,不管是爲動態web頁面實現次秒級響應時間,仍是縮短生成大型夜間報告的時間。數據庫

除了SELECT語句外,查詢的調優技術還適用於CREATE TABLE...AS SELECTINSERT INTO...SELECT的構造,以及DELETE語句中的WHERE子句,這些語句具備額外的性能考慮,由於它們將寫操做與面向讀取的查詢操做結合起來。segmentfault

NDB集羣支持鏈接下推優化,其中符合條件的鏈接被完整地發送到NDB集羣數據節點,能夠在節點之間分佈並並行執行。緩存

優化查詢的主要考慮因素是:函數

  • 要使緩慢的SELECT ... WHERE查詢更快,首先要檢查的是是否能夠添加索引,在WHERE子句中使用的列上設置索引,以加快計算、篩選和最終檢索結果的速度,爲了不浪費磁盤空間,構造一小組索引來加快應用程序中使用的許多相關查詢。

    索引對於引用不一樣表的查詢尤爲重要,這些查詢使用鏈接和外鍵等特性,你可使用EXPLAIN語句來肯定將哪些索引用於SELECT性能

  • 隔離和調優查詢的任何部分,例如一個函數調用,這會花費過多的時間。根據查詢的結構,能夠對結果集中的每一行調用一個函數,甚至對錶中的每一行調用一個函數,這極大地提升了效率。
  • 儘可能減小查詢中全表掃描的次數,特別是對於大表。
  • 經過按期使用ANALYZE TABLE語句使表統計信息保持最新,這樣優化器就有了構建有效執行計劃所需的信息。
  • 學習與每一個表的存儲引擎相關的調優技術、索引技術和配置參數,InnoDBMyISAM都有一套指導原則來支持和維持查詢的高性能。
  • InnoDB表優化單查詢事務。
  • 避免以難以理解的方式轉換查詢,特別是當優化器自動執行某些相同的轉換時。
  • 若是某個基本準則不能很容易地解決性能問題,那麼經過閱讀EXPLAIN計劃並調整索引、WHERE子句、join子句等,研究特定查詢的內部細節。
  • 調整MySQL用於緩存的內存區域的大小和屬性,因爲有效地使用了InnoDB緩衝池、MyISAM鍵緩存和MySQL查詢緩存,重複查詢運行得更快,由於結果是在第二次和之後的時間從內存中檢索的。
  • 即便對於使用緩存內存區域快速運行的查詢,你也能夠進行進一步優化,使它們所需的緩存內存更少,從而使應用程序更具可伸縮性。可伸縮性意味着你的應用程序能夠同時處理更多的用戶、更大的請求,等等,而不會出現性能的大幅降低。
  • 處理鎖定問題,你的查詢速度可能會受到同時訪問表的其餘會話的影響。

上一篇:優化概述

相關文章
相關標籤/搜索