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');
创建完索引,如何查看索引是否已经启用了呢,我们用explain命令查看一下:
EXPLAIN select * from index_test where status='0';
可以看到如下结果:
- <img id="img" src="https://img-my.csdn.net/uploads/201603/30/1459321667_1880.jpg" alt="" />
删除索引:
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/