现在的位置: 首页 > 综合 > 正文

详解数据库中的索引

2017年11月30日 ⁄ 综合 ⁄ 共 1759字 ⁄ 字号 评论关闭

1、什么是索引

2、使用索引为什么能够加快查询速度

3、在什么样的条件下使用索引比较合适,而在什么样的条件下不能使用索引

4、索引的优缺点


一、索引的定义

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


   索引是对数据库表中一列或多列的值进行排序的一种结构。

 

   索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。
 
    在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
   
    在数据库关系图中,可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。


二、为什么使用索引后能够加快检索速度

   在说明为什么使用索引之后能够加快索引的速率之前,先介绍一下在数据库中查找的方式:

1、 第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,也就是全表扫描。


2、第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。

 相对第一种查询方式第二种查询方式主要有两方面的优势:

 (1) 硬件方面的优势: 在相同的服务器下工作的话他们的硬件设施是一样的,所以说磁盘的I/O是一样的,但第一种查询是对整个表进行的扫描,对所有的记录都进行了一一读取,这样的话读取量比较大导致I/O相应时间较长,而使用索引查询的话,知识通过索引找到符合条件记录后通过索引中的记录快速找到表中对应的记录,这样的话读取量比较少,减少了I/O时间,减少了磁盘上的文件竞争带来的瓶颈,因此改善了数据库的性能。

  (2)软件方面的优势:直接在表中查找的话就是一行一行的查找,查找的速度很慢,而在索引中的数据已经排,所以查找的时候使用的是二分查找法所以查找速度比较快。


三、在什么样的条件下使用索引比较合适,而在什么样的条件下不能使用索引


1、适合建立索引的有:

  (1)在经常要进行搜索的属性列上建立索引,这样可以加快搜索速度。

  (2)作为主键的列上建立索引,强制该列的唯一性和组织表中数据的排列结构。

  (3)经常用来连接的列上建立索引,比如外键等通过建立索引可以加快和其他表的连接速度.

  (4)经常进行排序的列上建立索引,因为索引已经进行了排序,这样的话可以直接利用索引的排序。

  (5)经常作为where子句中的列建立索引,这样这个条件列是排好序的,所以查找的速度会更快,也加快了条件的判断。


2、不适合建立索引的有:

(1)会经常进行增删改查的属性列不能建立索引,因为要维护索引所以速度会比较慢


 四、索引的优缺点

 1、优点:

  (1)大大加快数据的检索速度;
  (2)创建唯一性索引,保证数据库表中每一行数据的唯一性;
  (3)加速表和表之间的连接;
  (4)在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

 2、缺点:  

   (1)索引需要占物理空间。
   (2)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。


  通过上面的学习可以看到要么是用时间换取空间要么是用空间换取时间,所以不是所在什么条件下都适合建立索引,而要看当时的条件,和具体情况而定。

 


注意:索引可以单独存储但不能单独存在,必须要依附于某个表。

这里写点额的知识点:

在数据库中写   and .........or 的时候我们可以发现下面的不起作用,这样是因为and的优先级高于OR所以 我们要用括号括起来 select * from student wher (sname like'hello' or sex like 'm') and  sage>10;

这样就会起作用了。

 这样的话就挺好的: select * from student wher (sname like'hello' or sex like 'm') and  sage>10; 会起作用的 一般在电商中查询的时候可以使用;



抱歉!评论已关闭.