2010-11-04 53 views
3

如何避免在mysql上進行全表掃描?避免在MySQL中進行全表掃描

+1

這是您第三次以不同的名義提出這個問題。爲什麼不閱讀關於查詢優化的MySQL參考手冊部分? – 2010-11-04 16:56:42

回答

12

通常,通過確保您在WHERE,JOINORDER BY條款中出現的字段具有可用的索引。

+0

..並在桌上有一個主鍵。 – dotariel 2010-11-04 16:52:02

+3

@ XSaint32你不需要主鍵來避免FTS。 – Keng 2010-11-04 16:54:49

+0

看看這個:http://tinypic.com/r/14y0m11/7 – gumpi 2010-11-04 17:15:55

5

索引您的數據。

編寫使用這些索引的查詢。

不止我們需要的細節。

+0

你能對此發表評論:http://tinypic.com/r/14y0m11/7 – gumpi 2010-11-04 17:22:38

1

另外請注意,有時您不能擺脫全表掃描,即當您需要從您的表中的所有行...或掃描索引的成本是掃描整個表的成本。

0

當你知道你期望返回多少行時使用一個LIMIT子句,例如,如果你正在尋找一個帶有唯一已知ID字段的記錄,那麼將你的select限制爲1,這樣mysql將停止搜索找到第一條記錄後。這同樣適用於更新和刪除。

SELECT * FROM `yourTable` WHERE `idField` = 123 LIMIT 1