【发布时间】:2010-11-14 20:17:34
【问题描述】:
根据关于Optimizing Queries With Explain的MySQL文档:
* ALL:对先前表中的每个行组合进行全表扫描。如果该表是第一个未标记为 const 的表,这通常不好,并且在所有其他情况下通常非常糟糕。 通常,您可以通过添加索引来避免 ALL,这些索引允许基于之前表中的常量值或列值从表中检索行。
这是否意味着可以优化使用 ALL 的 any 查询,使其不再进行全表扫描?
换句话说,通过向表中添加正确的索引,是否可以始终避免使用 ALL?或者在某些情况下,无论您添加什么索引,ALL 都是不可避免的?
【问题讨论】:
-
如果需要,您将如何检索所有列?通过使用 * (ALL) 或分别命名每一列。不会改变任何事情。
-
啊。澄清一下:假设查询试图检索 1 或 2 行,而不是整个表中的所有行。
标签: optimization mysql explain