Mysql如何避免全表掃描的方法

來源:互聯網
上載者:User

在以下幾種條件下,MySQL就會做全表掃描:
1>資料表是在太小了,做一次全表掃描比做索引鍵的尋找來得快多了。當表的記錄總數小於10且記錄長度比較短時通常這麼做。
2>沒有合適用於 ON 或 WHERE 分句的索引欄位。
3>讓索引欄位和常量值比較,MySQL已經計算(基於索引樹)到常量覆蓋了資料表的很大部分,因此做全表掃描應該會來得更快。
4>通過其他欄位使用了一個基數很小(很多記錄匹配索引索引值)的索引鍵。這種情況下,MySQL認為使用索引鍵需要大量尋找,還不如全表掃描來得更快。
對於小表來說,全表掃描通常更合適。但是對大表來說,嘗試使用以下技術來避免讓最佳化程式錯誤地選擇全表掃描:
1>執行 ANALYZE TABLE tbl_name 更新要掃描的表的索引鍵分布。
2> 使用 FORCE INDEX 告訴MySQL,做全表掃描的話會比利用給定的索引更浪費資源。
SELECT * FROM t1, t2 FORCE INDEX (index_for_column)
WHERE t1.col_name=t2.col_name;
3>啟動 mysqld 時使用參數 --max-seeks-for-key=1000 或者執行 SET max_seeks_for_key=1000 來告訴最佳化程式,所有的索引都不會導致超過1000次的索引搜尋。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.