《Mysql入門Mysql如何避免全表掃描的方法》要點(diǎn):
本文介紹了Mysql入門Mysql如何避免全表掃描的方法,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
在以下幾種條件下,MySQL就會(huì)做全表掃描:
1>數(shù)據(jù)表是在太小了,做一次全表掃描比做索引鍵的查找來得快多了.當(dāng)表的記錄總數(shù)小于10且記錄長(zhǎng)度比較短時(shí)通常這么做.
2>沒有合適用于 ON 或 WHERE 分句的索引字段.
3>讓索引字段和常量值比較,MySQL已經(jīng)計(jì)算(基于索引樹)到常量覆蓋了數(shù)據(jù)表的很大部分,因此做全表掃描應(yīng)該會(huì)來得更快.
4>通過其他字段使用了一個(gè)基數(shù)很小(很多記錄匹配索引鍵值)的索引鍵.這種情況下,MySQL認(rèn)為使用索引鍵需要大量查找,還不如全表掃描來得更快.
對(duì)于小表來說,全表掃描通常更合適.但是對(duì)大表來說,嘗試使用以下技術(shù)來避免讓優(yōu)化程序錯(cuò)誤地選擇全表掃描:
1>執(zhí)行 ANALYZE TABLE tbl_name 更新要掃描的表的索引鍵分布.
2> 使用 FORCE INDEX 告訴MySQL,做全表掃描的話會(huì)比利用給定的索引更浪費(fèi)資源.
SELECT * FROM t1, t2 FORCE INDEX (index_for_column)
WHERE t1.col_name=t2.col_name;
3>啟動(dòng) mysqld 時(shí)使用參數(shù) --max-seeks-for-key=1000 或者執(zhí)行 SET max_seeks_for_key=1000 來告訴優(yōu)化程序,所有的索引都不會(huì)導(dǎo)致超過1000次的索引搜索.
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/1075.html