`
java-admin
  • 浏览: 1364977 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

SQL SERVER中用CREATE INDEX 命令创建索引

阅读更多
CREATE INDEX 既可以创建一个可改变表的物理顺序的簇索引,也可以创建提高查询性能的非簇索引。其语法如下:
  CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED]

  INDEX index_name ON {table | view } column [ ASC | DESC ] [,...n])

  [WITH

  [PAD_INDEX]

  [ [, ] FILLFACTOR = fillfactor]

  [ [, ] IGNORE_DUP_KEY]

  [ [, ] DROP_EXISTING]

  [ [, ] STATISTICS_NORECOMPUTE]

  [ [, ] SORT_IN_TEMPDB ]

  ]

  [ON filegroup]

  各参数说明如下:

UNIQUE
  创建一个惟一索引,即索引的键值不重复。在列包含重复值时,不能建惟一索引。如要使用此选项,则应确定索引所包含的列均不允许NULL 值,否则在使用时会经常出错。

CLUSTERED

  指明创建的索引为簇索引。如果此选项缺省,则创建的索引为非簇索引。

NONCLUSTERED

    指明创建的索引为非簇索引其索引。数据页中包含了指向数据库中实际的表数据页的指针。

index_name

    指定所创建的索引的名称。索引名称在一个表中应是惟一的,但在同一数据库或不同数据库中可以重复。

table

    指定创建索引的表的名称。必要时还应指明数据库名称和所有者名称。 view

  指定创建索引的视图的名称。视图必须是使用SCHEMABINDING 选项定义过的,其具体信息请参见“视图创建”章节。

ASC | DESC

  指定特定的索引列的排序方式。默认值是升序(ASC)。

column

  指定被索引的列。如果使用两个或两个以上的列组成一个索引,则称为复合索引。一个索引中最多可以指定16 个列,但列的数据类型的长度和不能超过900 个字节。 PAD_INDEX指定填充索引的内部节点的行数,至少应大于等于两行。PAD_INDEX 选项只有在FILLFACTOR 选项指定后才起作用。因为PAD_INDEX 使用与FILLFACTOR 相同的百分比。缺省时,SQL Server 确保每个索引页至少有能容纳一条最大索引行数据的空闲空间。如果FILLFACTOR 指定的百分比不够容纳一行数据S,QL Server 会自动内部更改百分比。

FILLFACTOR = fillfactor

  FILLFACTOR 称为填充因子,它指定创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor 的值为1 到100。它其实同时指出了索引页保留的自由空间占索引页大小的百分比。即100 - fillfactor。 对于那些频繁进行大量数据插入或删除的表在建索引时应该为将来生成的索引数据预留较大的空间,即将fillfactor 设得较小,否则,索引页会因数据的插入而很快填满,并产生分页,而分页会大大增加系统的开销。但如果设得过小,又会浪费大量的磁盘空间,降低查询性能。因此,对于此类表通常设一个大约为10 的fillfactor。 而对于数据不更改的、高并发的、只读的表,fillfactor 可以设到95 以上乃至100。

  如果没有指定此选项,SQL Server 默认其值为0 。0 是个特殊值,与其它小FILLFACTOR

  值(如:1,2)的意义不同,其叶节点页被完全填满,而在索引页中还有一些空间。可以

  用存储过程Sp_configure 来改变默认的FILLFACTOR 值。

IGNORE_DUP_KEY

  此选项控制了当往包含于一个惟一约束中的列中插入重复数据时SQL Server 所作的反应。当选择此选项时,SQL Server 返回一个错误信息,跳过此行数据的插入,继续执行下面的插入数据的操作:当没选择此选项时,SQL Server 不仅会返回一个错误信息,还会回滚(Rolls Back)整个INSERT 语句(关于回滚,请参见“数据库更新”章节中的“事务”一节)。 DROP_EXISTING指定要删除并重新创建簇索引。删除簇索引会导致所有的非簇索引被重建,因为需要用行指针来替换簇索引键。如果再重建簇索引,那么非簇索引又会再重建一次,以便用簇索引键来替换行指针。使用DROP_EXISTING 选项可以使非簇索引只重建一次。

STATISTICS_NORECOMPUTE

  指定分布统计不自动更新。需要手动执行不带NORECOMPUTE 子句的UPDATESTATISTICS 命令。

SORT_IN_TEMPDB

  指定用于创建索引的分类排序结果将被存储到Tempdb 数据库中。如果Tempdb 数据库和用户数据库位于不同的磁盘设备上,那么使用这一选项可以减少创建索引的时间,但它会增加创建索引所需的磁盘空间。

ON filegroup

  指定存放索引的文件组。 注意:数据类型为TEXT、NTEXT、IMAGE或BIT的列不能作为索引的列。

  由于索引的宽度不能超过900个字节,因此数据类型为CHAR、VARCHAR、BINARY和VARBINARY的列的列宽 度超过了900字节,或数据类型为NCHAR、NVARCHAR的列的列宽度超过了450个字节时也不能作为索引的列。

  在使用索引创建向导创建索引时,不能将计算列包含在索引中,但在直接创建或使用CREATE INDEX命令创建索引时,则可以对计算机列创建索引,这在SQL Server2000以前的版本中是不允许的,算得上是一大改进。
分享到:
评论
1 楼 wang315235277 2014-07-14  
"CLUSTERED

  指明创建的索引为簇索引。如果此选项缺省,则创建的索引为非簇索引。"

这句有问题吧,Create Index 是创建聚集索引 Create Index 和 Create CLUSTERED  Index 是一样的

相关推荐

    SQL Server自动更新和自动创建统计信息选项

    SQLServer创建执行计划有一下几种不同的方式:  ● 统计信息会在每个新创建的索引中自动创建统计信息。  ● 如果数据库中AUTO_CREATE_STATISTICS被设置为ON,SQLServer将会自动对查询中用到的,且没有索引的列...

    sql2000 Log Explorer4.2(含注册码)+汉化

    它可以重放Create Table和Create Index命令,来重新生成被删掉的表,同时也受blob字段的限制。 拯救Dropped/Truncate命令导致的数据丢失 执行Drop Table和Truncate Table命令虽然会被SQLServer记录到日志文件中,...

    Oracle实验指导书

    本次实验要了解SQL语言中DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,掌握在Oracle SQL Developer中用DDL语言对表、索引、视图的增加、删除和改动。掌握使用SQL语句增加或删除约束,加深对完整性概念的...

    数据定义与简单查询实验1

    1 要求学生熟练掌握和使用SQL SQL Server企业管理器创建数据库 表索引和修改表结构 并学会使用SQL Server 查询分析器接收Transact SQL语句和进行结果分析 2 掌握查看 修改数据库和表的属性的方法 3 在建立好的...

    SQL课内上机实验数据定义

    (2) 在查询分析器中用SQL语句创建关系数据库基本表: 学生表Students(Sno,Sname, Semail,Scredit,Sroom); 教师表Teachers(Tno,Tname,Temail,Tsalary); 课程表Courses(Cno,Cname,Ccredit); 成绩表Reports(Sno,Tno,...

    SQL培训第一期

    用来建立及定义数据表、字段以及索引等数据库结构,create、alter、drop 。 1.2.4 数据控制语言(DCL) 用于控制对数据库里数据的访问,通常用于创建与用户访问相关的对象以及控制用户的权限,grant、revoke(撤销)...

    plantuml2mysql:此实用程序解析PlantUML类图并为MySQL生成SQL DDL

    您可以在字段名称中用#前缀定义主键(在PlantUML中表示受保护的字段),并在索引字段中用+定义前缀(在PlantUML中的公共字段)。 在字段名称后注明字段类型。 您也可以在--之后使用注释。 例如类定义: @start...

    asp.net知识库

    Create Tables and Build inserts from Tables by using Mygeneration Templates(Sql Server) C# 获取数据库中某个某个表的创建脚本 DbHelperV2 - Teddy的通用数据库访问组件设计和思考 也论该不该在项目中使用...

    mysql数据库的基本操作语法

    create index idx_temp_name$pwd on temp(name, pwd); 删除索引: drop index idx_temp_name on temp; Ø 视图 视图就是一个表或多个表的查询结果,它是一张虚拟的表,因为它并不能存储数据。 视图的作用、优点...

    MYSQL培训经典教程(共两部分) 2/2

    MYSQL高级特性 81 4.1 集合函数 82 4.1.1 行列计数 82 4.1.2统计...SQL模式匹配 93 4.3.2 扩展正则表达式模式匹配 94 4.3.3 总结 96 4.4 深入SELECT的查询功能 96 4.4.1 列和表的别名 96 4.4....

    MYSQL培训经典教程(共两部分) 1/2

    MYSQL高级特性 81 4.1 集合函数 82 4.1.1 行列计数 82 4.1.2统计...SQL模式匹配 93 4.3.2 扩展正则表达式模式匹配 94 4.3.3 总结 96 4.4 深入SELECT的查询功能 96 4.4.1 列和表的别名 96 4.4....

    cmd操作命令和linux命令大全收集

    93. cliconfg-------SQL SERVER 客户端网络实用程序 94. Clipbrd--------剪贴板查看器 95. conf-----------启动netmeeting 96. certmgr.msc----证书管理实用程序 操作详解 net use ipipc$ " " /user:" " 建立IPC...

    ORACLE锁深入分析

    4 S(Share) 共享锁 Create index、Lock share? 5 SSX(S/Row-X) 共享行级排它锁 Lock share row exclusive? 6 X(Exclusive) 排它锁 Alter table、Drop able、Drop index、Truncate table 、Lock exclusive Oracle...

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    查询语句WHERE date_format(gmt_create, '%Y-%m-%d') = '2016-11-11'无法利用gmt_create索引。 C .当 c 列类型为 char 时,查询语句 WHERE c = 5 无法利用c索引。 D .索引字段使用时不能进行函数运算。 多选 15...

    delphi 开发经验技巧宝典源码

    0136 使用FileCreate函数创建一个图形文件 88 0137 使用GetCurrentDir函数返回当前目录 89 0138 在指定路径中搜索指定的文件 89 0139 使用FileExists函数判断指定文件是否存在 90 0140 使用FileGetAttr函数...

    delphi 开发经验技巧宝典源码06

    0136 使用FileCreate函数创建一个图形文件 88 0137 使用GetCurrentDir函数返回当前目录 89 0138 在指定路径中搜索指定的文件 89 0139 使用FileExists函数判断指定文件是否存在 90 0140 使用FileGetAttr函数...

Global site tag (gtag.js) - Google Analytics