索引适用的地方

时间:2012-06-23 00:06:03

标签: mysql sql indexing

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

3 个答案:

答案 0 :(得分:3)

如果您只选择在mysql选择的索引中使用的确切字段,则可以使用索引中的数据。

然而;向我提出这个问题告诉我,你错过了索引的基本点以及它们是如何工作的。只需阅读手册中的一两章就可以更清楚地理解 - http://dev.mysql.com/doc/refman/5.0/en/optimization-indexes.html应该对你来说非常符合逻辑,它们主要用于实现WHERE和ORDER BY子句。

答案 1 :(得分:3)

你忘记了JOINS。通过FOREIGN KEY约束字段(它们被自动索引' - 至少在MySQL中)加入它们的方式来设计表是一种常见的做法。但有时也会例外 - 稍后会很难咬住他们的创作者。 )

答案 2 :(得分:1)

设计索引时,请遵循以下准则:对包含大量行的表,在查询的WHERE子句或表连接中使用的列以及ORDER BY和GROUP BY查询中使用的列上使用索引。

避免在频繁更新的列上不经常使用的索引。此外,避免在经常更新的表上有许多索引。否则,您会不必要地增加查询的插入和更新时间。

适当地使用聚簇和非聚簇索引。了解每个目的并为您的方案选择正确的类型。

使用覆盖索引减少常用语句的查询执行时间。覆盖索引是一个非聚集索引,它包含WHERE子句和查询列选择中的所有列。

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