您的位置:首页 > 数据库

数据库索引

2016-03-31 15:11 260 查看
1)什么是数据库索引

        在数据库系统中,除了存储数据库表的结构与数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。通俗的讲,索引就是对数据库表中一列或多列的值进行排序的一种结构。

.2)为什么要建立数据库索引

       索引是经过某种算法优化过的,通过索引可快速访问、修改数据库表中的数据信息,简而言之,通过索引不需要扫描整个数据库就可以得到想要的数据信息,以提高数据库的访问效率。

.3)数据库索引的分类

索引分为聚簇索引和非聚簇索引两种:

(1)聚簇索引,表数据按照索引的顺序来存储的,能提高多行检索的速度。

(2)非聚簇索引,表数据存储顺序与索引顺序无关,对于单行的检索很快。

根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。

唯一索引 
        唯一索引是不允许其中任何两行具有相同索引值的索引,尽管唯一索引有助于定位信息,但是为了获取最佳性能效果,一般建议使用主键索引或者唯一约束。
主键索引 
       对表的主键创建的索引,是唯一索引的特定类型。
聚集索引 
      表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。

.4)数据库索引的创建与运用

先来建立一张测试表:

[html] view
plain copy

create table index_test(  

id int primary key,  

name char(20),  

status char(1)  

);  

插入数据:

[html] view
plain copy

insert into index_test values(1,'index1','0');  

insert into index_test values(2,'index2','0');  

insert into index_test value
b0cf
s(3,'index3','0');  

创建基于status列的索引:create index index_test_status on  index_test(status);

创建完索引,如何查看索引是否已经启用了呢,我们用explain命令查看一下:

         EXPLAIN select * from index_test where status='0';

可以看到如下结果:

[html] view
plain copy

<img id="img" src="http://img.my.csdn.net/uploads/201603/30/1459321667_1880.jpg" alt="" />  

可以看到,在possible_keys中应用了index_test_status索引。

删除索引:

         drop index index_test_status on index_test;

.5)索引的实现方式

           后续补充

.6)索引的存储结构

          后续补充

.7)索引的优缺点

    优点:

         1.大大加快数据的检索速度;   

         2.创建唯一性索引,保证数据库表中每一行数据的唯一性;   

         3.加速表和表之间的连接;   

         4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

    缺点:

  1.索引需要占用数据表以外的物理存储空间

  2.创建索引和维护索引要花费一定的时间

  3.当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

参考资料:

        http://baike.baidu.com/link?url=JubSbaontvl6aeuvWiVPXYv3EdOrXOsfoPrW1SxDl2iPpZjz98I9ndY0V3H8mPIHzllFpk6MewRtx3eRhKLlRK
        http://kb.cnblogs.com/page/45712/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 索引