索引的应用

索引的概念

    数据库中的索引类似于一本书的目录,在这本书中使用目录可以快速找到我们想要的信息,而不需要读完整本书。在数据库中,数据库程序使用索引可以查询表中的数据,而不必扫描整个表。数据库中的索引是表中值以及各值存储位置的列表。

索引的利弊

利:

因为查询执行的大部分都是I/O操作,使用索引可以避免全表扫描而且索引是经过某种算法优化过的一个排序的数据结构 ,因而查找次数要少的所,合理的使用索引可以加速数据的查询。

弊:

   增加了数据库的存储空间;在插入和修改数据时要花费较多的时间。

    上图展示了一种可能的索引方式。左边是数据表,一共有两列7条记录,最左边的是数据记录的物理地址。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找树获取相应数据。

索引的分类

    按存储结构区分:“聚集索引(又称聚类索引,簇集索引)”,“分聚集索引(非聚类索引,非簇集索引)”
    按数据唯一性区分:“唯一索引”,“非唯一索引”

    按键列个数区分:“单列索引”,“多列索引”。

聚集索引

    物理存储顺序和索引顺序完全相同,所以只有一种排序方式,一个表只能建立一个聚集索引。

非聚集索引

    指定数据的逻辑顺序,表中数据并没有按照索引键值指定的顺序排列,仍然按照插入记录时的顺序存放。
    SQL Server在默认的情况下建立的索引是非聚集索引,由于非聚集索引不对表中的数据进行重组,而只是存储索引键

唯一索引

    指索引的键值不重复,为表上的某字段创建唯一索引时,应确定该字段没有NULL值,否则在使用时会经常出错。唯一索引可以确保索引列不包含重复的值,在多列唯一索引中,索引可以确保索引列中每个值组合都是唯一的。

单列索引

    单列索引是指索引基于单个列所创建

多列索引

    索引项是多个索引,在索引建立语句总同时包含多个列名。

索引的操作

创建索引

    CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED ]
    INDEX index_name 
    ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )

    CREATE INDEX命令创建索引各参数说明如下:
    UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。
    CLUSTERED:用于指定创建的索引为聚集索引。
    NONCLUSTERED:用于指定创建的索引为非聚集索引。
    index_name:用于指定所创建的索引的名称。
    table:用于指定创建索引的表的名称。
    view:用于指定创建索引的视图的名称。
    ASC|DESC:用于指定具体某个索引列的升序或降序排序方向。

例子   

   CREATE UNIQUE
   INDEX unStudentID
   ON T_dwxer_tiankongti_Record_01(StudentID ASC)
查看结果:

查看索引

   use [2015-06-29考前英语备份]
   exec sp_helpindex T_dwxer_tiankongti_Record_01
查看结果:

删除索引

   DROP INDEX T_dwxer_tiankongti_Record_01.t_dwerindex;

索引的设计原则

   对于一张表来说索引的有无和建立什么样的索引,要取决与where字句和Join表达式中。
  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值