1

在我对索引和语句运行的基本理解中explain,它们似乎只适用于WHEREand ORDER BY。是否有其他地方/实例在SELECT语句中应用索引?

4

3 回答 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 子句和查询列选择中的所有列。

http://www.youtube.com/watch?v=ET0EIxRTTgM

于 2012-06-23T03:16:10.690 回答