SQL语句-创建索引
创建索引的实例说明:
语法: CREATE [索引类型] INDEX 索引名称 ON 表名(列名) WITH FILLFACTOR = 填充因子值0~100 GO
USE 库名 GO IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引 DROP INDEX TEST.IX_TEST_TNAME--如果存在则删除 --创建索引 CREATE NONCLUSTERED INDEX IX_TEST_TNAME --创建一个非聚集索引 ON TEST(TNAME) --为TEST表的TNAME字段创建索引 WITH FILLFACTOR = 30 --填充因子为30% GO SELECT * FROM TEST(INDEX = IX_TEST_TNAME) WHERE TNAME = 'A' --指定按‘IX_TEST_TNAME’索引查询 总结: 1.什么是索引:数据库中的索引是某个表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 2.分类: 唯一索引(UNIQUE):不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引) 主键索引:主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引) 聚集索引(CLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引 非聚集索引(NONCLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引 3.创建索引的标准:用语频繁搜索的列;用语对数据进行排序的列 注意:如果表中仅有几行,或列中只包含几个不同的值,不推荐创建索引,因为SQL Server 在小型表中用索引搜索数据所花的时间比逐行搜索更长。
######################################################## 以下是对索引的理解: ************************************************************************************ 在SQL Server 中创建索引的方法 *********************************************************************************** 创建索引的方法: 1.利用企业管理器中的索引向导创建索引。 2.利用企业管理器直接创建索引。 3.利用Transact-SQL语句中的CREATE INDEX命令创建索引。 4.利用企业管理器中的索引优化向导创建索引。 一. 利用索引向导创建索引(略) 二. 利用企业管理器直接创建索引 其具体步骤如下: 1.在企业管理器中,展开指定的服务器和数据库,选择要创建索引的表,用右键单击该表,从弹出的快捷菜单中选择所有任务项的管理索引选项,就会出现管理索引对话框。在该对话框中,可以选择要处理的数据库和表 。 2.单击“新建”按钮,则出现新建索引对话框. 3.选择完成后单击“确定”按钮,即可生成新的索引;单击“取消”按钮,则取消新建索引的操作。 三. 利用Transact-SQL语句中的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 ] CREATE INDEX命令创建索引各参数说明如下: UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。 CLUSTERED:用于指定创建的索引为聚集索引。 NONCLUSTERED:用于指定创建的索引为非聚集索引。 index_name:用于指定所创建的索引的名称。 table:用于指定创建索引的表的名称。 view:用于指定创建索引的视图的名称。 ASC|DESC:用于指定具体某个索引列的升序或降序排序方向。 Column:用于指定被索引的列。 PAD_INDEX:用于指定索引中间级中每个页(节点)上保持开放的空间。 FILLFACTOR = fillfactor:用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor的值为1到100。 IGNORE_DUP_KEY:用于控制当往包含于一个唯一聚集索引中的列中插入重复数据时SQL Server所作的反应。 DROP_EXISTING:用于指定应删除并重新创建已命名的先前存在的聚集索引或者非聚集索引。 STATISTICS_NORECOMPUTE:用于指定过期的索引统计不会自动重新计算。 SORT_IN_TEMPDB:用于指定创建索引时的中间排序结果将存储在 tempdb 数据库中。 ON filegroup:用于指定存放索引的文件组。 例子:为表employees创建了一个唯一聚集索引,其程序清单如下: CREATE UNIQUE CLUSTERED INDEX number_ind ON employees (number) with pad_index, fillfactor=20, ignore_dup_key, drop_existing, statistics_norecompute 例子: 为表employees创建了一个复合索引,其程序清单如下: create index employees_cpl_ind on employees(name,age) with pad_index, fillfactor=50 四. 利用索引优化向导创建索引 索引优化向导可以完成以下几方面的工作: 1.根据给定的工作负荷,通过使用查询优化器分析该工作负荷中的查询,为数据库推荐最佳索引组合。 2.分析所建议的更改将会产生的影响,包括索引的使用,查询在表之间的分布,以及查询在工作负荷中的性能。 3.推荐为执行一个小型的问题查询集而对数据库进行优化的方法。 4.通过设定高级选项如磁盘空间约束、最大查询语句数和每个索引最多对应字段数等,允许定制推荐方式 |