数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

数据库基础:讲解MySQL索引的概念及数据库索引的应用[1]


发布日期:2018年06月19日
 
数据库基础:讲解MySQL索引的概念及数据库索引的应用[1]

数据库引入了索引

用户对数据库最频繁的操作是进行数据查询一般情况下数据库在进行查询操作时需要对整个表进行数据搜索当表中的数据很多时搜索数据就需要很长的时间这就造成了服务器的资源浪费为了提高检索数据的能力数据库引入了索引机制

有关索引的比喻

从某种程度上可以把数据库看作一本书把索引看作书的目录通过目录查找书中的信息显然较没有目录的书方便快捷

数据库索引实际是什么?(两部分组成)

索引是一个单独的物理的数据库结构它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单

索引在表中的角色

一个表的存储是由两部分组成的一部分用来存放表的数据页面另一部分存放索引页面索引就存放在索引页面上

索引高效原理

通常索引页面相对于数据页面来说小得多当进行数据检索时系统先搜索索引页面从中找到所需数据的指针再直接通过指针从数据页面中读取数据

索引的分类

在SQL Server 的数据库中按存储结构的不同将索引分为两类簇索引(Clustered Index)和非簇索引(Nonclustered Index)

()簇索引对表的物理数据页中的数据按列进行排序然后再重新存储到磁盘上即簇索引与数据是混为一体的它的叶节点中存储的是实际的数据由于簇索引对表中的数据一一进行了排序因此用簇索引查找数据很快但由于簇索引将表的所有数据完全重新排列了它所需要的空间也就特别大大概相当于表中数据所占空间的% 表的数据行只能以一种排序方式存储在磁盘上所以一个表只能有一个簇索引

()非簇索引具有与表的数据完全分离的结构使用非簇索引不用将物理数据页中的数据按列排序非簇索引的叶节点中存储了组成非簇索引的关键字的值和行定位器行定位器的结构和存储内容取决于数据的存储方式如果数据是以簇索引方式存储的则行定位器中存储的是簇索引的索引键;如果数据不是以簇索引方式存储的这种方式又称为堆存储方式(Heap Structure)则行定位器存储的是指向数据行的指针非簇索引将行定位器按关键字的值用一定的方式排序这个顺序与表的行在数据页中的排序是不匹配的由于非簇索引使用索引页存储因此它比簇索引需要更多的存储空间且检索效率较低但一个表只能建一个簇索引当用户需要建立多个索引时就需要使用非簇索引了

小结Clustered Index 是与物理数据混在一起并对物理数据进重排就像使用拼音查字典;Unclustered Index 是与物理数据完全分离的利用额外空间对关键字进行重排就像使用部首查字典

数据库索引应用

索引的概念

索引就是加快检索表中数据的方法数据库的索引类似于书籍的索引在书籍中索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息在数据库中索引也允许数据库程序迅速地找到表中的数据而不必扫描整个数据库

索引的特点

索引可以加快数据库的检索速度

索引降低了数据库插入修改删除等维护任务的速度

索引创建在表上不能创建在视图上

索引既可以直接创建也可以间接创建

可以在优化隐藏中使用索引

使用查询处理器执行SQL语句在一个表上一次只能使用一个索引

其他

索引的优点

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

大大加快数据的检索速度这也是创建索引的最主要的原因

加速表和表之间的连接特别是在实现数据的参考完整性方面特别有意义

在使用分组和排序子句进行数据检索时同样可以显着减少查询中分组和排序的时间

通过使用索引可以在查询的过程中使用优化隐藏器提高系统的性能

索引的缺点

创建索引和维护索引要耗费时间这种时间随着数据量的增加而增加

索引需要占物理空间除了数据表占数据空间之外每一个索引还要占一定的物理空间如果要建立聚簇索引那么需要的空间就会更大

当对表中的数据进行增加删除和修改的时候索引也要动态的维护降低了数据的维护速度

[] []

               

上一篇:数据库相关:详细讲解Linux环境下MySQL 5.1安装步骤[1]

下一篇:数据库基础:讲解MySQL索引的概念及数据库索引的应用[2]