程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> MySQL 查詢優化器的使用基礎教程

MySQL 查詢優化器的使用基礎教程

編輯:MYSQL入門知識
 

查詢引擎總是不能正確理解你的查詢意圖嗎?害怕的錯誤的時機提出錯誤的問題嗎? Susan S. Harkins 告訴我們怎樣用 MySQL 的查詢優化器提高你的交流技能。

大多數查詢引擎提供了查詢簡化的功能,其目的就是使得查詢比原始輸入更加高效。MySQL 查詢優化器極大的發揮了這種功能,為了在絲毫不改變原始目標的前提下盡量簡化查詢,優化器對查詢進行分析有時甚至重新描述。

按照效率最高的原則,MySQL 查詢優化器啟用了一到兩條強調規則。查詢優化器的最主要的邏輯思想是盡多盡早的去掉一些行。這聽起來有悖於查詢的目標,查詢的確就是為了選出記錄,但這個邏輯卻並沒有錯。開始時優化器去掉的行越多,需要查詢按照附加規則去估值的行就越少。需要與規則進行比較的行數越少,查詢就能越快的完成任務。舉個例子,假設一個SELECT查詢使用 WHERE 語法規定了兩個條件:

WHERE col1 = 條件A AND col2 = 條件B

現在,假設1,000行符合條件A而只有250行符合條件B。而且,只有5條記錄同時符合上述兩個條件。優化器選擇的是最小障礙路徑:250行匹配。原因很明顯:這樣只需要對符合條件B的250條記錄進行估值來找到同時符合兩個條件的記錄。如果優化器起初選擇符合條件A的1000條記錄,MySQL就得對這1000條記錄進行估值,來找到同時符合兩個條件的記錄。MySQL使用索引來確定到底哪個條件提供了最快捷的路徑

索引

簡單說來,索引就是指向數據文件中實際記錄的指針。索引包含了值對應了表中每一個值,但是 MySQL 是按照順序存儲索引值的。例如,在表employee中,你可能對字段 EmployeeNumber 進行索引。不管你怎樣整理表employee,索引值始終按照EmployeeNumber進行排序。

現在假設在表中查找編號為24的雇員。MySQL對表進行搜索並在索引值為25處停止。優化器知道,索引值超過25就不會再有更多指針符合查找規則。

現在,為了能夠理解下面的敘述,需要定義幾個必須知道的索引術語: 單列索引只考慮一列的值。
多列索引考慮一列以上的值。
左端前綴索引是充當索引的左端列的集合。

前兩個顧名思義;第三個復雜一些。多列索引有可能充當幾個前綴,這是因為索引中任意從最左邊開始的連續列,都可用來匹配數值。例如,假設有一個三列索引,其列名如下:LastName, FirstName,和Title。除了原來的索引,還可能有兩個以上索引:
LastName, FirstName
LastName

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved