程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL數據庫技術(21)

MySQL數據庫技術(21)

編輯:關於MYSQL數據庫

  4.2 MySQL 查詢優化程序

    在發布一個選擇行的查詢時, MySQL 進行分析,看是否能夠對它進行優化,使它執行更快。本節中,我們將研究查詢優化程序怎樣工作。更詳細的信息,可參閱MySQL 參考指南中的“Getting Maximum Performance from MySQL”,該章描述了MySQL 采用的各種優化措施。該章中的信息會不斷變化,因為MySQL 的開發者不斷對優化程序進行改進,因此,有必要經常拜訪一下該章,看看是否有可供利用的新技巧。(h t t p : / / w w w.mysql.com/ 處的MySQL 聯機參考指南在不斷地更新。)

    MySQL 查詢優化程序利用了索引。當然,它也利用了其他信息。例如,如果發布下列查詢,MySQL 將非常快地執行它,不管相應的表有多大:

    SELECT * FROM tb1_name WHERE 1 = 0

    在此情形中,MySQL 考察WHERE 子句,如果認識到不可能有滿足該查詢的行,就不會對該表進行搜索。可利用EXPLAIN 語句知道這一點,EXPLAIN 語句要求MySQL 顯示某些有關它應該執行一條SELECT 查詢,而實際沒有執行的信息。為了使用E X P L A I N,只需要SELECT 語句前放置EXPLAIN 即可,如下所示:

  EXPLAIN SELECT * FROM tb1_name WHERE 1 = 0

  通常,EXPLAIN 返回的信息比這個多,包括將用來掃描表的索引、將要使用的連接類型以及需要在每個表中掃描的行數估計等等。

  4.2.1 優化程序怎樣工作

  MySQL 查詢優化程序有幾個目標,但其主要目標是盡量利用索引,而且盡量使用最具有限制性的索引以排除盡可能多的行。這樣做可能會適得其反,因為發布一條SELECT 語句的目的是尋找行,而不是拒絕它們。優化程序這樣工作的原因是從要考慮的行中排除行越快,那麼找到確實符合給出標准的行就越快。如果能夠首先進行最具限制性的測試,則查詢可以進行得更快。假如有一個測試兩列的查詢,每列上都有一個索引:

    WHERE coll = "some value" AND col2 = "some other value"

  • 首頁
  • 上一頁
  • 1
  • 2
  • 3
  • 4
  • 下一頁
  • 尾頁
  • 共4頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved