数据库索引
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/
在数据库系统中,除了存储数据库表的结构与数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。通俗的讲,索引就是对数据库表中一列或多列的值进行排序的一种结构。
.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/
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- PostgreSQL教程(八):索引详解
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle数据库执行脚本常用命令小结
- Oracle 数据库 临时数据的处理方法
- Oracle外键不加索引引起死锁示例