`
java-admin
  • 浏览: 1384166 次
  • 性别: 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中用索引视图查看性能状况

    `CREATE UNIQUE CLUSTERED INDEX`用于创建一个唯一的聚集索引,这是索引视图的必要组成部分,因为它允许数据的实际物理组织与索引匹配,从而实现物化的视图。 查询索引视图就像查询普通表一样,例如: ```sql ...

    sql server字段保存文件,blob操作

    `image`字段类型在SQL Server 2000中用于存储任何长度的二进制数据,最大可达2^31-1(约2GB)。然而,由于`image`在新版本中已被弃用,我们通常推荐使用`varbinary(MAX)`。`varbinary(MAX)`可以存储最多2^31-1个字节...

    sqlserver 2008创建表分区

    在SQL Server 2008中,创建表分区是一种优化大型数据库性能的技术。它通过将一个大表的数据分成多个逻辑部分,或者称为“分区”,来提高查询效率和管理大规模数据的便捷性。以下是对这个主题的详细解释: 一、表...

    如何编写SQL Server存储过程的详尽学习资料

    XML在SQL Server中用于数据交换和存储,学习如何在存储过程中使用XML数据类型和相关函数可以帮助我们更好地处理结构化和半结构化数据。 另一个文件"SQL Server 2000 czgc"可能包含了关于SQL Server 2000存储过程的...

    sql Server2005高级编程

    Notification Services 是 SQL Server 2005 中用于发送通知的服务组件。它支持多种通知方式,包括电子邮件、短信等。 ##### 4.1 配置通知服务 使用 Notification Services 需要配置相应的通知通道和触发器。触发器...

    《SQL-Server数据库技术》试卷C.docx

    3. SQL 语言中,建立表用的命令是 CREATE TABLE,删除表中数据的命令是 DELETE。 SQL 语言 1. BETWEEN 条件年龄 BETWEEN 15 AND 35,表示年龄在 15 至 35 之间。 2. SQL 语言中,字符串常量用单引号或双引号括起来...

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

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

    15个常用的SQL Server高级语法

    WHILE循环在SQL Server中用于重复执行一段代码直到满足特定条件为止。例如,如果不及格人数超过一半,提升所有人的英语分数: ```sql DECLARE @count INT, @failCount INT, @i INT = 0 SELECT @count = COUNT...

    《SQL-Server数据库技术》试卷J.docx

    27. 在 SQL Server 中,根据索引对数据表中记录顺序的影响,索引可以分为聚集索引和非聚集索引。正确 知识点:索引、聚集索引、非聚集索引 28. 备份是为了在数据库遭到破坏时,能够修复。正确 知识点:备份、...

    MySQL与SQL Server的一些区别浅析

    - MySQL创建非聚集索引较简单,只需在建表时指定`KEY`,SQL Server则需使用`CREATE INDEX`语句。 14. 字段长度限制: - MySQL表单个字段总长度不超过65535个字符。 15. 安装和资源占用: - MySQL安装简单,文件...

    SQL 常用关键字解析

    `CLUSTERED INDEX` 关键字用于创建聚集索引。聚集索引会按照索引的顺序来物理排序数据行。一个表最多只能有一个聚集索引,因为它决定了数据在表中的物理存储方式。 ```sql CREATE CLUSTERED INDEX idx_name ON table...

    经典SQL语句—练习

    8. **创建和删除索引**:使用`CREATE UNIQUE INDEX idxname ON tabname(col)`创建唯一索引,`DROP INDEX tabname.idxname`用于删除索引。索引一旦建立,通常不能更改,如需修改必须先删除再重建。 9. **创建和删除...

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

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

    SQL增删改查小结

    此外,可以为表创建自增长列,如在MySQL中用`auto_increment`,而在SQL Server中用`identity`。 访问数据主要有两种方式:表扫描(遍历整个表)和索引查找(利用索引快速定位)。创建索引可以提升查询效率,特别是...

    经典SQL语句大全

    在SQL Server中,你可以使用`sp_addumpdevice`存储过程创建备份设备,然后使用`BACKUP DATABASE`命令进行备份。例如: ```sql USE master; EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_...

    如何在SQL Server 2014中用资源调控器压制你的存储?

    然而,在SQL Server 2014及以后的版本中,它进一步扩展了其能力,引入了对IOPS(每秒输入/输出操作数)的限制,这在管理高IOPS需求的操作如索引重建或DBCC检查时尤为重要。 资源调控器通过资源池和工作负荷组来实现...

    在Java中用SQL语句操作实用举例

    SQL是一种强大的工具,用于创建和管理数据库对象,包括数据表、视图、索引等。它分为两大类:数据定义语言(DDL)和数据操作语言(DML)。DDL主要用于创建和修改数据库结构,如创建表、删除表、定义字段属性等;DML...

    SQL语法(帮助文档)

    `CREATE INDEX IndexName ON TableName (ColumnName)`会在指定列上创建索引,提高查询效率。 7. **修改表结构**: `ALTER TABLE`语句用于修改已有表的结构,如添加、删除或修改列:`ALTER TABLE TableName ADD ...

    SQL语句大全

    - `GO`: 在SQL Server中用于分隔批处理。 - `CREATE DATABASE`: 创建一个新的数据库。 ##### 删除数据库 - **语法**: ```sql DROP DATABASE dbname; ``` - **解释**: 直接使用`DROP DATABASE`命令来删除指定...

Global site tag (gtag.js) - Google Analytics