我爱Aspx >> Asp.Net >> SQL Server 索引结构及其使用(一)二、何时使用聚集索引或非聚集索引
下面的表总结了何时使用聚集索引或非聚集索引(很重要):
动作描述 使用聚集索引 使用非聚集索引
列经常被分组排序 应 应
返回某范围内的数据 应 不应
一个或极少不同值 不应 不应
小数目的不同值 应 不应
大数目的不同值 不应 应
频繁更新的列 不应 应
外键列 应 应
主键列 应 应
频繁修改索引列 不应 应
事实上,我们可以通过前面聚集索引和非聚集索引的定义的例子来理解上表。如:返回某范围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询2004年1月1日至2004年10月1日之间的全部数据时,这个速度就将是很快的,因为您的这本字典正文是按日期进行排序的,聚类索引只需要找到要检索的所有数据中的开头和结尾数据即可;而不像非聚集索引,必须先查到目录中查到每一项数据对应的页码,然后再根据页码查到具体内容。
三、结合实际,谈索引使用的误区
理论的目的是应用。虽然我们刚才列出了何时应使用聚集索引或非聚集索引,但在实践中以上规则却很容易被忽视或不能根据实际情况进行综合分析。下面我们将根据在实践中遇到的实际问题来谈一下索引使用的误区,以便于大家掌握索引建立的方法。
1、主键就是聚集索引
这种想法笔者认为是极端错误的,是对聚集索引的一种浪费。虽然SQL SERVER默认是在主键上建立聚集索引的。
通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,步长一般为1。我们的这个办公自动化的实例中的列Gid就是如此。此时,如果我们将这个列设为主键,SQL SERVER会将此列默认为聚集索引。这样做有好处,就是可以让您的数据在数据库中按照ID进行物理排序,但笔者认为这样做意义不大。
显而易见,聚集索引的优势是很明显的,而每个表中只能有一个聚集索引的规则,这使得聚集索引变得更加珍贵。
Ҷƪл˵?
SQL在存储过程中使用递归[05-20]
自动生成sql setup.iss这个无人值..[05-20]
SQL Server无人值守安装[05-20]
SQL Server无人值守安装[05-20]
解决 SQL Server 耗尽内存的情况[05-20]
利用SQLDMO备份还原SQL SERVER[05-20]
Sql Server 常用函数[05-20]
一个用asp备份与恢复SQL Server数..[05-20]
一个用asp备份与恢复SQL Server数..[05-20]
基于SQL Server的WEB应用程序注入..[05-20]
存储过程分页[05-20]
SQL在存储过程中使用递归[05-20]
如何获取 IP 用户名 等信息[05-20]
UTF-8 and Unicode FAQ[05-20]
使用ICallbackEventHandler接口实..[05-20]
不用.net和其组件用asp访问webse..[05-20]
PageTemplate(页模板)[05-20]
ASP.NET 页面对象模型[05-20]
ADO.NET中的多数据表操作之读取[05-20]
ASP.NET里的事务处理[05-20]