數據庫應用程序的核心邏輯是經過SQL語句執行的,不管是直接經過解釋器發出,仍是經過API在後臺提交。本節中的調優指南有助於加快各類MySQL應用程序的速度,這些指導原則包括讀取和寫入數據的SQL操做、一般SQL操做的幕後開銷以及在特定場景(如數據庫監視)中使用的操做。web
以SELECT
語句的形式的查詢執行數據庫中的全部查找操做,優化這些語句是首要任務,不管是爲動態web頁面實現次秒級響應時間,仍是縮短生成大型夜間報告的時間。數據庫
除了SELECT
語句外,查詢的調優技術還適用於CREATE TABLE...AS SELECT
、INSERT INTO...SELECT
的構造,以及DELETE
語句中的WHERE
子句,這些語句具備額外的性能考慮,由於它們將寫操做與面向讀取的查詢操做結合起來。segmentfault
NDB集羣支持鏈接下推優化,其中符合條件的鏈接被完整地發送到NDB集羣數據節點,能夠在節點之間分佈並並行執行。緩存
優化查詢的主要考慮因素是:函數
SELECT ... WHERE
查詢更快,首先要檢查的是是否能夠添加索引,在WHERE
子句中使用的列上設置索引,以加快計算、篩選和最終檢索結果的速度,爲了不浪費磁盤空間,構造一小組索引來加快應用程序中使用的許多相關查詢。索引對於引用不一樣表的查詢尤爲重要,這些查詢使用鏈接和外鍵等特性,你可使用EXPLAIN
語句來肯定將哪些索引用於SELECT
。性能
ANALYZE TABLE
語句使表統計信息保持最新,這樣優化器就有了構建有效執行計劃所需的信息。InnoDB
和MyISAM
都有一套指導原則來支持和維持查詢的高性能。InnoDB
表優化單查詢事務。EXPLAIN
計劃並調整索引、WHERE
子句、join
子句等,研究特定查詢的內部細節。InnoDB
緩衝池、MyISAM
鍵緩存和MySQL查詢緩存,重複查詢運行得更快,由於結果是在第二次和之後的時間從內存中檢索的。