数据库(六)数据库索引

来源:互联网 发布:信息融合数据关联 编辑:程序博客网 时间:2024/05/17 23:52

.1)什么是数据库索引

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

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

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

.3)数据库索引的分类

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

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

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

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

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

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

先来建立一张测试表:

create table index_test(id int primary key,name char(20),status char(1));
插入数据:

insert into index_test values(1,'index1','0');insert into index_test values(2,'index2','0');insert into index_test values(3,'index3','0');
创建基于status列的索引:create index index_test_status on  index_test(status);

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

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

可以看到如下结果:

<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/

0 0
原创粉丝点击