Mysql如何避免全表掃描的方法
更新時間:2008年10月18日 01:28:20 作者:
如果MySQL需要做一次全表掃描來處理查詢時,在 EXPLAIN 的結(jié)果中 type 字段的值是 ALL。
在以下幾種條件下,MySQL就會做全表掃描:
1>數(shù)據(jù)表是在太小了,做一次全表掃描比做索引鍵的查找來得快多了。當(dāng)表的記錄總數(shù)小于10且記錄長度比較短時通常這么做。
2>沒有合適用于 ON 或 WHERE 分句的索引字段。
3>讓索引字段和常量值比較,MySQL已經(jīng)計算(基于索引樹)到常量覆蓋了數(shù)據(jù)表的很大部分,因此做全表掃描應(yīng)該會來得更快。
4>通過其他字段使用了一個基數(shù)很?。ê芏嘤涗浧ヅ渌饕I值)的索引鍵。這種情況下,MySQL認(rèn)為使用索引鍵需要大量查找,還不如全表掃描來得更快。
對于小表來說,全表掃描通常更合適。但是對大表來說,嘗試使用以下技術(shù)來避免讓優(yōu)化程序錯誤地選擇全表掃描:
1>執(zhí)行 ANALYZE TABLE tbl_name 更新要掃描的表的索引鍵分布。
2> 使用 FORCE INDEX 告訴MySQL,做全表掃描的話會比利用給定的索引更浪費(fèi)資源。
SELECT * FROM t1, t2 FORCE INDEX (index_for_column)
WHERE t1.col_name=t2.col_name;
3>啟動 mysqld 時使用參數(shù) --max-seeks-for-key=1000 或者執(zhí)行 SET max_seeks_for_key=1000 來告訴優(yōu)化程序,所有的索引都不會導(dǎo)致超過1000次的索引搜索。
1>數(shù)據(jù)表是在太小了,做一次全表掃描比做索引鍵的查找來得快多了。當(dāng)表的記錄總數(shù)小于10且記錄長度比較短時通常這么做。
2>沒有合適用于 ON 或 WHERE 分句的索引字段。
3>讓索引字段和常量值比較,MySQL已經(jīng)計算(基于索引樹)到常量覆蓋了數(shù)據(jù)表的很大部分,因此做全表掃描應(yīng)該會來得更快。
4>通過其他字段使用了一個基數(shù)很?。ê芏嘤涗浧ヅ渌饕I值)的索引鍵。這種情況下,MySQL認(rèn)為使用索引鍵需要大量查找,還不如全表掃描來得更快。
對于小表來說,全表掃描通常更合適。但是對大表來說,嘗試使用以下技術(shù)來避免讓優(yōu)化程序錯誤地選擇全表掃描:
1>執(zhí)行 ANALYZE TABLE tbl_name 更新要掃描的表的索引鍵分布。
2> 使用 FORCE INDEX 告訴MySQL,做全表掃描的話會比利用給定的索引更浪費(fèi)資源。
SELECT * FROM t1, t2 FORCE INDEX (index_for_column)
WHERE t1.col_name=t2.col_name;
3>啟動 mysqld 時使用參數(shù) --max-seeks-for-key=1000 或者執(zhí)行 SET max_seeks_for_key=1000 來告訴優(yōu)化程序,所有的索引都不會導(dǎo)致超過1000次的索引搜索。
相關(guān)文章
mysql數(shù)據(jù)庫亂碼之保存越南文亂碼解決方法
做一個包含越南文的網(wǎng)站,用戶說在保存包含越南文的文章時,MSYQL亂碼了,看下面的解決方法2013-12-12
MySQL系列關(guān)于NUll值的經(jīng)驗總結(jié)分析教程
這篇文章主要為大家介紹了MySQL系列關(guān)于NUll值的一些經(jīng)驗總結(jié)分析,關(guān)于null值的影響作用以及為什么會出現(xiàn)null值的原因等等問題的解析2021-10-10
Linux下MySQL安裝配置 MySQL配置參數(shù)詳解
Linux下MySQL安裝配置 MySQL配置參數(shù)詳解,在linux下配置mysql的朋友可以參考下。2011-07-07
MySQL?8.0.29?安裝配置方法圖文教程(windows?zip版)
這篇文章主要為大家詳細(xì)介紹了windows?zip版MySQL?8.0.29?安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06
mysql動態(tài)游標(biāo)學(xué)習(xí)(mysql存儲過程游標(biāo))
mysql動態(tài)游標(biāo)示例,通過準(zhǔn)備語句、視圖和靜態(tài)游標(biāo)實現(xiàn),大家參考使用吧2013-12-12
linux配置mysql數(shù)據(jù)庫遠(yuǎn)程連接失敗的解決方法
這篇文章主要為大家詳細(xì)介紹了linux配置mysql數(shù)據(jù)庫遠(yuǎn)程連接失敗的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
MySQL中的用戶創(chuàng)建與權(quán)限管理
這篇文章主要介紹了MySQL中的用戶創(chuàng)建與權(quán)限管理,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
mysql 開發(fā)技巧之JOIN 更新和數(shù)據(jù)查重/去重
這篇文章主要介紹了mysql 開發(fā)技巧之JOIN 更新和數(shù)據(jù)查重/去重的相關(guān)資料,需要的朋友可以參考下2016-09-09

