何时使用聚集索引 -
查询注意事项:
1) 使用 BETWEEN、>、>=、< 和 <= 等运算符返回一系列值 2) 返回大型结果集
3) 使用 JOIN 子句;通常这些是外键列
4) 使用 ORDER BY 或 GROUP BY 子句。在 ORDER BY 或 GROUP BY 子句中指定的列上的索引可能不需要数据库引擎对数据进行排序,因为这些行已经排序。这提高了查询性能。
列注意事项:
考虑具有以下一个或多个属性的列:1) 是唯一的或包含许多不同的值 2) 定义为 IDENTITY,因为该列在表中保证是唯一的 3) 经常用于对从中检索的数据进行排序一张桌子
对于以下属性,聚集索引不是一个好的选择:1) 经常更改的列 2) 宽键
何时使用非聚集索引-
查询注意事项:
1) 使用 JOIN 或 GROUP BY 子句。在涉及连接和分组操作的列上创建多个非聚集索引,并在任何外键列上创建一个聚集索引。
2) 不返回大结果集的查询
3) 包含查询的搜索条件中经常涉及的列,例如返回完全匹配的 WHERE 子句
列注意事项:
考虑具有以下一个或多个属性的列:
1) 覆盖查询。有关详细信息,请参阅包含列的索引
2) 如果将聚集索引用于其他列,则有许多不同的值,例如姓氏和名字的组合
3) 经常用于对从表中检索到的数据进行排序
数据库注意事项:
1) 更新要求低但数据量大的数据库或表可以从许多非聚集索引中受益,从而提高查询性能。
2) 包含大量更新表的在线事务处理应用程序和数据库应避免过度索引。此外,索引应该很窄,即尽可能少的列。