暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL Server中使用 CREATE INDEX创建索引

攻城狮VLOG 2021-03-03
2066

使用T-SQL的CREATE INDEX语句可以创建各种不同类型的索引,其基本语法如下:

    CREATE [UNIQUE][CLUSTERED|NONCLUSTERED]
    INDEX index_name
    ON 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论