【数据库学习】索引的使用

来源:互联网 发布:音乐剪辑合并软件 知乎 编辑:程序博客网 时间:2024/05/18 01:42

1. 索引概念

  索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。其本身是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针.

2.什么情况下不适用索引

索引的缺点

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

第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

以下情况不适用索引

  • 表记录太少  
  • 经常插入、删除、修改的表 对一些经常处理的业务表应在查询允许的情况下尽量减少索引(当修改性能远远大于检索性能时,不应该创建索 引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因 此,当修改性能远远大于检索性能时,不应该创建索引。)
  • 数据重复且分布平均的表字段
  • 不会出现在where条件中的字段不该建立索引

3. 什么情况下适用索引

  • 较频繁地作为查询条件的字段


4. 索引无效的情况

  • 如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
  • like查询是以%开头
  • 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
  • 如果mysql估计使用全表扫描要比使用索引快,则不使用索引
5. 查看索引使用情况,同时便于分析索引建立的好坏

    使用命令:

      show status like 'handler_read%';

handler_read_key:这个值越高越好,越高表示使用索引查询到的次数
handler_read_rnd_next:这个值越高,说明查询低效

 

0 0
原创粉丝点击