聚集索引和非聚集索引
2012-12-25 12:03
288 查看
聚集索引适用情况
1、含有大量非重复值的列。2、使用BETWEEN,>,>=,<或<=返回一个范围值的列
3、被连续访问的列
4、返回大型结果集的查询
5、经常被使用连接或GROUP BY子句的查询访问的列
下面的表总结了何时使用聚集索引或非聚集索引:
动作描述 | 使用聚集索引 | 使用非聚集索引 |
列经常被分组排序 | 应 | 应 |
返回某范围内的数据 | 应 | 不应 |
一个或极少不同值 | 不应 | 不应 |
小数目的不同值 | 应 | 不应 |
大数目的不同值 | 不应 | 应 |
频繁更新的列 | 不应 | 应 |
外键列 | 应 | 应 |
主键列 | 应 | 应 |
频繁修改索引列 | 不应 | 应 |
使用注意事项
注意事项 定义聚集索引键时使用的列越少越好,这一点很重要。如果定义了一个大型的聚集索引键,则同一个表上定义的任何非聚集索引都将增大许多,因为非聚集索引条目包含聚集键。当把 SQL 脚本保存到可用空间不足的磁盘上时,索引优化向导不返回错误。有关 Microsoft® SQL Server™ 2000 中如何实现非聚集索引的更多信息,请参见非聚集索引。在分析过程中,索引优化向导会消耗相当多的 CPU 及内存资源。最好在生产服务器的测试版上执行优化,而不要在生产服务器上执行。此外,最好在另一台计算机上而非运行 SQL Server 的计算机上运行该向导。该向导不能用于在 SQL Server 6.5 版或更早版本的数据库中选择或创建索引及统计信息。
在创建聚集索引之前,应先了解您的数据是如何被访问的。可考虑将聚集索引用于:
包含大量非重复值的列。使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、< 和 <=。被连续访问的列。返回大型结果集的查询。经常被使用联接或 GROUP BY 子句的查询访问的列;一般来说,这些是外键列。对 ORDER BY 或 GROUP BY 子句中指定的列进行索引,可以使 SQL Server 不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。 OLTP 类型的应用程序,这些程序要求进行非常快速的单行查找(一般通过主键)。应在主键上创建聚集索引。 聚集索引不适用于:
频繁更改的列 这将导致整行移动,因为 SQL Server 必须按物理顺序保留行中的数据值。这一点要特别注意,因为在大数据量事务处理系统中数据是易失的。宽键 来自聚集索引的键值由所有非聚集索引作为查找键使用,因此存储在每个非聚集索引的叶条目内。
相关文章推荐
- [笔记]聚集索引和非聚集索引相关知识点
- 聚集索引和非聚集索引的区别:
- SQL Server的聚集索引和非聚集索引
- SQL Server 索引基础知识(2)----聚集索引,非聚集索引 索引基础知识(2)----聚集索引,非聚集索引
- 聚集索引和非聚集索引的区别
- 聚集索引和非聚集索引的区别
- SQL Server的聚集索引和非聚集索引
- 聚集索引和非聚集索引(整理)
- 聚集索引和非聚集索引(整理)
- 聚集索引和非聚集索引(整理)
- SQL Server 聚集索引和非聚集索引的区别总结
- 聚集索引和非聚集索引(整理) --转
- 聚集索引和非聚集索引最简单的解释
- 聚集索引和非聚集索引的区别,何时创建索引
- SQL Server 聚集索引和非聚集索引的区别
- 聚集索引和非聚集索引的区别有哪些
- MySQL聚集索引和非聚集索引
- sql中创建主键非聚集索引和聚集索引
- SQL Server 聚集索引和非聚集索引的区别
- 聚集索引和非聚集索引的区别: