使用T-SQL的CREATE INDEX语句可以创建各种不同类型的索引,其基本语法如下:
CREATE [UNIQUE][CLUSTERED|NONCLUSTERED]INDEX index_nameON table_name(column_name…)[WITH FILLFACTOR=x]
CREATE INDEX 的参数比较多,下面对其中一些常用的参数进行说明:
UNIQUE 创建唯一索引,可选项。
CLUSTERED 创建聚集索引,可选项。
NONCLUSTERED 创建非聚集索引。
index_name 创建的索引名
table_name 数据表名,这里也可以是视图名
FILLFACTOR 设置填充因子的大小,指定一个0~100之间的值,改值指示索引页填满的空间所占的百分比。
tips:更多的时候索引创建好之后并不需要显式的使用,SQL Server会根据所创建的索引自动优化查询。
适合创建索引的列:
在经常需要搜索的列上,建立索引,增加搜索速度。
在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构。
在经常用在连接的列上,这些列主要是外键,可以加快连接速度。
在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,所以其指定范围是连续的。
在经常需要排序的列上创建索引,因为索引已经排序,这样可以利用索引的排序,加快查询速度。
在经常需要使用where子句的列上创建索引,加快条件的判断速度。
不适合创建索引的列:
对于查询中很少使用或者参考列不应该创建索引。
对于有很少数值的列不应该添加索引。
对于定义为text、image、bit数据类型的列不应该添加索引,因为这些数据要么太大,要么取值很小。
当修改性能大于检索性能时不应该添加索引。
代码示例:
use myschool-- 判断是否存在索引if exists (select * from sys.indexes where name='in_stuname')--如果存在则删除索引drop index tblstudent.in_stuname--创建索引 unique 唯一索引 clustered 聚集索引 nonclustered非聚集索引create nonclustered index in_stuname on tblstudent(stuname)--设置填充因子with fillfactor =50--显式使用索引查询select * from tblStudent with(index=in_stuname)
文章转载自攻城狮VLOG,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




