MySQL索引的优点和缺点

通俗的来说,索引就相当于一个字典的目录,为了方便查找书中的内容,通过对内容建立索引形成目录,索引是一个文件,它是要占据物理内存的。
官方的来说索引它是一种数据结构,数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据表中的数据。

优点:
(1)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
(2)可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
(3)可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
(4)在使用分组和排序子句进行数据检索时,同时可以显著减少查询中分组和排序的时间。

缺点:
(1)创建索引和维护索引需要时间成本,这个成本随着数据量的增加而加大。
(2)创建索引和维护索引需要空间成本,每一条索引都要占据数据库的物理存储空间,数据量越大,占用及空间也越大(数据表占据的是数据库的数据空间)
(3)会降低表的增删改的效率,因为每次增删改索引需要进行动态维护,导致时间边长。

索引的使用场景

(1)选择唯一性索引:
唯一性索引的值是唯一的,可以更加速的通过该索引来确定某条记录。
就比如学生表中学生的学号是具有唯一性的字段,为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话可能会存在同名现象,从而降低查询速度。

(2)经常需要排序,分组,联合操作的字段建立索引:
经常需要 order by,group by ,distinct , union 等操作的字段,排序操作会浪费很多时间,为其建立索引可以有效地避免排序操作。

(3)常作为查询条件的字段建立索引:
如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度,为这样的字段建立索引,可以提高整个表的查询速度。

(4)限制索引的数目:
索引的数目不是越多越好,每个索引都需要占用磁盘空间,索引越多需要的磁盘空间就会越大。修改表的时候对索引的重构和更新都会很麻烦;索引越多更新表就会越浪费时间。

(5)尽量使用数据量少的索引:
索引的值越长查询的速度会越慢。例如一个char(100)类型的字段进行全文检索需要的时间比char(10)类型的字段需要的时间更多。

(6)删除不再使用或很少使用的索引:
表中的数据大量更新或者是数据的使用方式被改变后,原有的一些索引可能不在需要,数据库管理员应当定期找出这些索引,将他们删除,从而减少索引对更新操作的影响。

(7)尽量的扩展索引,不要新建索引:
比如表中已经有a 的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。

索引的分类

常见的索引类型有主键索引,唯一索引,普通索引,全文索引,联合索引

(1)主键索引,即主索引,根据主键建立索引,不允许重复,空值
ALTER TABLE ‘mydb’ ADD PRIMARY KEY pk_index(‘a’);

(2)唯一索引,用来建立索引的值必须是唯一的,允许空值。
ALTER TABLE ‘mydb’ ADD UNIQUE index_name(‘a’);

(3)普通索引:用表中的普通列构建的索引,没有任何限制
ALTER TABLE ‘mydb’ ADD INDEX index_name(‘a’);

(4)组合索引:用多个列组合构建的索引,这多个列中的值不允许有空值
ALTER TABLE ‘mydb’ ADD INDEX index_name(‘a’,‘a2’,‘a3’…);

MySQL索引的优点和缺点相关推荐

  1. MySQL 索引类别与索引使用指南

    文章目录 概述 MySQL 索引类型 MySQL 索引方法 BTREE 方法 HASH 方法 主键构成的索引结构 主键索引的优点 主键索引的缺点 依赖顺序插入 更新代价高 索引使用指南 索引树回顾 索 ...

  2. MySQL - 索引的数据结构

    目录 一.为什么使用索引 二.索引及其优缺点 1.索引概述 2.优点 3.缺点 三.InnoDB中索引的推演 1.索引之前的查找 在单页中查找 在多页中查找 2.设计索引 一个简单的索引设计方案 In ...

  3. Mysql—索引①:原理篇

    目录 什么是索引? 索引的优点和缺点 数据页 什么是数据页 页与页之间的连接结构(双链表) 单页查找 多页查找 聚簇索引,二级索引(非聚簇索引.辅助索引) 聚簇索引 非聚簇索引 聚簇索引与非聚簇索引比 ...

  4. MySQL——索引及调优篇

    一.索引的数据结构 1.1.为什么要使用索引 索引是存储引擎用于快速查找数据记录的一种数据结构,就好比一本教科书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章.MySQL中也是一样 ...

  5. MySQL索引的设计、使用与优化

    一.使用索引的优缺点 索引是数据库用来提高性能的最常用工具,所有的MySQL列都可以被索引,对相关的列进行索引是提高select性能的最佳途径.使用索引的优点和缺点如下: 优点: 快速访问数据表中的特 ...

  6. mysql索引空间太大_MySQL优化索引

    1.  MySQL如何使用索引 索引用于快速查找具有特定列值的行.如果没有索引,MySQL必须从第一行开始,然后遍历整个表以找到相关的行.表越大,花费越多.如果表中有相关列的索引,MySQL可以快速确 ...

  7. mysql索引教程_MySQL教程96-MySQL索引类型

    索引的类型和存储引擎有关,每种存储引擎所支持的索引类型不一定完全相同.MySQL 索引可以从存储方式.逻辑角度和实际使用的角度来进行分类. 存储方式区分 根据存储方式的不同,MySQL 中常用的索引在 ...

  8. mysql 树形结构_再读MySQL索引-《高性能MySQL》索引手记

    最近工作中经常和MySQL打交道,当数据量小的时候,不同查询方式以及是否使用索引并无大碍,当数据量随着业务的成长急剧加速时,索引的重要性不言而喻. 本篇文章以<高性能MySQL>中的索引章 ...

  9. MySQL索引背后的数据结构及算法原理【转】

    http://blog.codinglabs.org/articles/theory-of-mysql-index.html MySQL索引背后的数据结构及算法原理[转] 摘要 本文以MySQL数据库 ...

最新文章

  1. Windows与VMware下的Linux文件共享方式总结
  2. 马哥linux2020博客,马哥linux学习(bash shell学习)
  3. jdbc版本怎么看_Jmeter(十三)-JDBC脚本开发
  4. matlab曲线拟合 最低点,Matlab曲线拟合 最小二乘法 polyfit【转】
  5. C# 结合 PInvoke 对接 IP 摄像头的笔记
  6. 双十一有“后悔药”了?淘宝88VIP将推出退货秒退款服务
  7. android调用web接口,Android调用WebService系列之请求调用
  8. Windows下的网络编程
  9. ST-Link驱动安装包 STM32 keil
  10. 《北京市住房租赁条例》
  11. id门禁卡复制到手机_使用iPhone解锁开门?手机复制门禁卡教程分享
  12. 有哪些比较基础的优质计算机书籍?
  13. 手机QQ邮箱可以发html邮件么,如何使用手机qq邮箱发送邮件
  14. 如何通俗地理解假设检验基本原理
  15. jsp主机与asp主机的区别和支持分析
  16. Ubuntu18.04grub增加console口输出
  17. 三招解决!电脑密码忘记了怎么办?新手都能学会
  18. 一个屌丝程序猿的人生(十六)
  19. Xposed 模块编写
  20. 马云控股“文化中国”暗藏啥玄机?

热门文章

  1. 微信小程序 ---- iPhone X 以上机型留出底部安全距离
  2. USACO2007 捕牛记 /// queue+桶 oj1503
  3. Ubuntu下的Docker安装
  4. 获取计算机本机信息命令大全(WMIC指令、硬盘、网卡等)
  5. 编写Chrome扩展插件教程
  6. Sublime编辑LaTex
  7. Windows系统的远程桌面端口修改的方法
  8. 通过WebBrowser显示Word文档的方法
  9. Docker#Docker当做虚拟机使用
  10. DEBUG模式和RELEASE模式切换