mysql数据库21_MySQL数据库技术(21)[组图]_MySQL
4.2 MySQL 查詢優(yōu)化程序
在發(fā)布一個選擇行的查詢時, MySQL 進行分析,看是否能夠?qū)λM行優(yōu)化,使它執(zhí)行更快。本節(jié)中,我們將研究查詢優(yōu)化程序怎樣工作。更詳細的信息,可參閱MySQL 參考指南中的“Getting Maximum Performance from MySQL”,該章描述了MySQL 采用的各種優(yōu)化措施。該章中的信息會不斷變化,因為MySQL 的開發(fā)者不斷對優(yōu)化程序進行改進,因此,有必要經(jīng)常拜訪一下該章,看看是否有可供利用的新技巧。(h t t p : / / w w w.mysql.com/ 處的MySQL 聯(lián)機參考指南在不斷地更新。)
MySQL 查詢優(yōu)化程序利用了索引。當(dāng)然,它也利用了其他信息。例如,如果發(fā)布下列查詢,MySQL 將非??斓貓?zhí)行它,不管相應(yīng)的表有多大:
SELECT * FROM tb1_name WHERE 1 = 0
在此情形中,MySQL 考察WHERE 子句,如果認識到不可能有滿足該查詢的行,就不會對該表進行搜索??衫肊XPLAIN 語句知道這一點,EXPLAIN 語句要求MySQL 顯示某些有關(guān)它應(yīng)該執(zhí)行一條SELECT 查詢,而實際沒有執(zhí)行的信息。為了使用E X P L A I N,只需要SELECT 語句前放置EXPLAIN 即可,如下所示:
EXPLAIN SELECT * FROM tb1_name WHERE 1 = 0
通常,EXPLAIN 返回的信息比這個多,包括將用來掃描表的索引、將要使用的連接類型以及需要在每個表中掃描的行數(shù)估計等等。
4.2.1 優(yōu)化程序怎樣工作
MySQL 查詢優(yōu)化程序有幾個目標,但其主要目標是盡量利用索引,而且盡量使用最具有限制性的索引以排除盡可能多的行。這樣做可能會適得其反,因為發(fā)布一條SELECT 語句的目的是尋找行,而不是拒絕它們。優(yōu)化程序這樣工作的原因是從要考慮的行中排除行越快,那么找到確實符合給出標準的行就越快。如果能夠首先進行最具限制性的測試,則查詢可以進行得更快。假如有一個測試兩列的查詢,每列上都有一個索引:
WHERE coll = "some value" AND col2 = "some other value"
相關(guān)標簽:查詢 優(yōu)化
本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!
總結(jié)
以上是生活随笔為你收集整理的mysql数据库21_MySQL数据库技术(21)[组图]_MySQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php简单的mysql类_一个简单的ph
- 下一篇: mysql工_mysql