关于索引的问题!!!!!!!!!!!!
请老大解释以下三种索引建法各自的意思和有什么好处? 除这三种索引建法还有哪种建法?
第一种:
create index Index_1 on BrandType (
Brand ASC,
Type ASC
)
go
第二种:
create unique index Index_1 on BrandType (
Brand ASC,
Type ASC
)
go
第三种:
create clustered index Index_1 on BrandType (
Brand ASC,
Type ASC
)
go
问题点数:30、回复次数:9Top
1 楼dawugui(潇洒老乌龟)回复于 2006-10-08 21:16:13 得分 5
第一种:按Brand升序,再按Type升序
第二种:按Brand升序,再按Type升序的唯一索引
第三种:不知道.
Top
2 楼judyblue()回复于 2006-10-08 21:23:29 得分 0
顶Top
3 楼SQLServer_2005(DBA)回复于 2006-10-08 21:54:37 得分 5
第1,3是一样的,都是创建了一个聚集复合索引
第2是创建了一个唯一聚集复合索引Top
4 楼judyblue()回复于 2006-10-08 22:00:41 得分 0
哪个对呀,晕了Top
5 楼judyblue()回复于 2006-10-09 08:59:30 得分 0
顶Top
6 楼dulei115(前途无亮)回复于 2006-10-09 09:02:40 得分 10
参数
UNIQUE
为表或视图创建唯一索引(不允许存在索引值相同的两行)。视图上的聚集索引必须是 UNIQUE 索引。
在创建索引时,如果数据已存在,Microsoft® SQL Server™ 会检查是否有重复值,并在每次使用 INSERT 或 UPDATE 语句添加数据时进行这种检查。如果存在重复的键值,将取消 CREATE INDEX 语句,并返回错误信息,给出第一个重复值。当创建 UNIQUE 索引时,有多个 NULL 值被看作副本。
如果存在唯一索引,那么会产生重复键值的 UPDATE 或 INSERT 语句将回滚,SQL Server 将显示错误信息。即使 UPDATE 或 INSERT 语句更改了许多行但只产生了一个重复值,也会出现这种情况。如果在有唯一索引并且指定了 IGNORE_DUP_KEY 子句情况下输入数据,则只有违反 UNIQUE 索引的行才会失败。在处理 UPDATE 语句时,IGNORE_DUP_KEY 不起作用。
SQL Server 不允许为已经包含重复值的列创建唯一索引,无论是否设置了 IGNORE_DUP_KEY。如果尝试这样做,SQL Server 会显示错误信息;重复值必须先删除,才能为这些列创建唯一索引。
CLUSTERED
创建一个对象,其中行的物理排序与索引排序相同,并且聚集索引的最低一级(叶级)包含实际的数据行。一个表或视图只允许同时有一个聚集索引。
具有聚集索引的视图称为索引视图。必须先为视图创建唯一聚集索引,然后才能为该视图定义其它索引。
在创建任何非聚集索引之前创建聚集索引。创建聚集索引时重建表上现有的非聚集索引。
如果没有指定 CLUSTERED,则创建非聚集索引。
Top
7 楼judyblue()回复于 2006-10-09 09:15:41 得分 0
楼上的老大的意思,不知道我理解的对不,见下
第一种:为非聚集索引
create index Index_1 on BrandType (
Brand ASC,
Type ASC
)
go
第二种:为唯一索引
create unique index Index_1 on BrandType (
Brand ASC,
Type ASC
)
go
第三种:为聚集索引
create clustered index Index_1 on BrandType (
Brand ASC,
Type ASC
)
go
以上理解的对吗?
主键是不是就是聚集索引?Top
8 楼dulei115(前途无亮)回复于 2006-10-09 09:23:44 得分 10
对了,上面全部是SQL自带的联机丛书中的说明,建议LZ去看看Top
9 楼bluechen(BlueChen)回复于 2007-01-12 09:15:25 得分 0
主键跟聚集索引不是一回事。
主键列和聚集索引列,并不是一定是一个列的。
当然,用企业管理器,设置主键的时候,会默认的创建聚集索引。
可以把聚集索引建到另外的列上。
毕竟聚集索引是查询最快的索引,得好好利用。Top




