CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

关于索引的问题!!!!!!!!!!!!

楼主judyblue()2006-10-08 21:12:15 在 MS-SQL Server / 疑难问题 提问

请老大解释以下三种索引建法各自的意思和有什么好处?   除这三种索引建法还有哪种建法?  
  第一种:  
  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

相关问题

关键词

得分解答快速导航

  • 帖主:judyblue
  • dawugui
  • SQLServer_2005
  • dulei115
  • dulei115

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo