在我对索引和语句运行的基本理解中explain
,它们似乎只适用于WHERE
and ORDER BY
。是否有其他地方/实例在SELECT
语句中应用索引?
问问题
57 次
3 回答
3
如果您只选择在 mysql 选择的索引中也使用的确切字段,则可以使用索引中的数据。
然而; 问我这个问题告诉我你错过了索引的基本点以及它们是如何工作的。阅读手册中的一两章以获得更清晰的理解可能是个好主意 - http://dev.mysql.com/doc/refman/5.0/en/optimization-indexes.html。对您来说,它们主要用于实现 WHERE 和 ORDER BY 子句应该是非常合乎逻辑的。
于 2012-06-23T00:10:50.153 回答
3
你忘了JOINS
。以这样一种方式设计表已成为一种常见的做法,即它们将由 FOREIGN KEY 约束字段(它们被“自动”索引 - 至少在 MySQL 中)连接。但有时也会有例外——以后会狠狠地咬他们的创造者。)
于 2012-06-23T00:11:00.230 回答
1
设计索引时,请遵循以下准则:对具有大量行的表、查询的 WHERE 子句或表连接中使用的列以及 ORDER BY 和 GROUP BY 查询中使用的列使用索引。
避免在经常更新的列上使用不经常使用的索引。此外,避免在频繁更新的表上拥有许多索引。否则,您会不必要地增加查询的插入和更新时间。
适当地使用聚集和非聚集索引。了解每个的目的并为您的方案选择正确的类型。
使用覆盖索引来减少常用语句的查询执行时间。覆盖索引是一个非聚集索引,它包含 WHERE 子句和查询列选择中的所有列。
于 2012-06-23T03:16:10.690 回答