数据库(六)数据库索引
来源:互联网 发布:信息融合数据关联 编辑:程序博客网 时间: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/
- 数据库(六)数据库索引
- mysql数据库(六)索引
- 《数据库索引设计优化》读书笔记(六)
- 数据库调优教程(六) 索引的相关操作
- 数据库调优教程(六) 索引的相关操作
- 初学mysql(六)-数据库之索引
- 嵌入式数据库(六)
- (六)数据库安全性
- 数据库索引(一)
- 数据库索引(二)
- 索引 (数据库术语)
- 数据库索引(算法)
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库索引
- 红帽 Linux 考试 要求
- linux通过校园网上网
- GNU ARM 汇编指令
- 关于ARM处理器中operand2的理解分析
- centos 5.3 桌面3D特效
- 数据库(六)数据库索引
- centos 5.3 下载、安装
- poj1077
- sntp使用
- temp
- 美国校长为什么炮轰中国大学
- Extjs3.0拓展comboBox成comboBoxTree
- 07级毕业设计题目
- Linux人才需求高涨 Unix与Win需求持平