目录

  • 一、MySQL索引是什么?
    • 1.概念:
    • 2.本质:
    • 3.其他
  • 二、为什么用它?
  • 三、它有哪些种类?
    • 1.普通索引
    • 2.唯一索引
    • 3.全文索引
    • 4.单列索引
    • 5.多列索引
    • 6.空间索引
  • 四、它有什么优缺点?
    • 1.优点?
    • 2.缺点?
    • 3.Tips:

一、MySQL索引是什么?

1.概念:

索引(Index) :是帮助MySQL高效获取数据的数据结构

2.本质:

索引的本质: 索引是数据结构 ,可以简单的理解为: “排好序的快速查找的数据结构” 它满足特定查找算法。这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现 高级查找算法 。

3.其他

索引是在存储引擎中实现的,在InnoDB中是B+树,存储引擎可以定义每个表的“最大索引数” 和“最大索引长度” 所有存储引擎支持每个表至少16个索引,总索引长度至少256字节。

二、为什么用它?

使用索引的目的是为了减少磁盘IO的次数 加快查询速率
索引就好比是一本教科书的目录,通过目录中找到对应文章的页码,便可以快速的定位到需要的文章。在MySQL中也是一样的道理,进行数据查找时,首先查看查询条件是否命中某条索引,符合则通过索引查找相关数据,否则就需要全表扫描。没有命中索引,全表扫描就如同想要在茫茫人海中找到对的人一样;使用了索引,就如同使用了北斗导航定位系统,又快又准。

三、它有哪些种类?

索引分为普通索引、唯一索引、全文索引、单列索引、多列索引、空间索引。

1.普通索引

即不应用任何限制条件的索引,该索引可以在任何数据类型中创建。字段本身的约束条件可以判断其值是否为空或唯一。

2.唯一索引

使用UNIQUE参数可以设置唯一索引。创建该索引时,索引的值必须唯一。主键是一种特殊唯一索引。

3.全文索引

使用FULLTEXT参数可以设置全文索引。全文索引只能创建在CHAR、VARCHAR、TEXT类型的字段上。查询数据量较大的字符串类型字段时,使用全文索引可以提高查询速度。注意:全文索引在默认情况下是对大小写字母不敏感的,可以通过使用二进制对索引的列进行排序以执行大小写敏感的全文索引。MySQL中只有MyISAM存储引擎支持全文索引

4.单列索引

顾名思义,单列索引值对应一个字段的索引。可以包括上述的三种索引方式。应用该索引的条件只需要保证该索引值对应一个字段即可。

5.多列索引

多列索引是在表的多个字段上创建一个索引。该索引只想创建时对应的多个字段,可以通过这几个字段进行查询。要想应用该索引,用户必须使用这些字段中的第一个字段。

6.空间索引

使用SPATIAL参数可以设置控件索引。控件索引只能建立在控件数据类型(LINESTRING、POINT、GEOMETRY等)上,这样可以提高系统获取控件数据的效率。MySQL中只有MyISAM存储引擎支持空间索引,且该字段不能为空值。

四、它有什么优缺点?

1.优点?

1.类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本 ,这也是创建索引最主要的原因。
2.通过创建唯一索引,可以保证数据库表中每一行数据的唯一性
3.在实现数据的参考完整性方面,可以加速表和表之间的连接 。换句话说,对于有依赖关系的子表和父表联合查询时,可以提高查询速度。
4.在使用分组和排序子句进行数据查询时,可以显著减少查询中分组和排序的时间 ,降低CPU的消耗

2.缺点?

增加索引也有许多不利的方面,
1.创建索引和维护索引要耗费时间,并且随着数据量的增加,所耗费的时间也会增加。
2.索引需要占磁盘空间 ,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,存储在磁盘上 ,如果有大量的索引,索引文件就可能比数据文件更快达到最大文件尺寸。
3.虽然索引大大提高了查询速度,同时却会降低更新表的速度。当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的维护速度。

因此,选择使用索引时,需要综合考虑索引的优点和缺点。

3.Tips:

索引可以提高查询的速度,但是会影响插入记录的速度。这种情况下,最好的办法是先删除表中的索引,然后插入数据,插入完成后再创建索引。

MySQL之索引知多少相关推荐

  1. 面试官问:为什么MySQL的索引不采用Kafka的索引机制

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 第一眼看到这个问题,也是很迷惑的,谁没事会问这种问题.然而,事实上 ...

  2. mysql多索引结构_MySQL 索引结构

    谈到 MYSQL 索引服务端的同学应该是熟悉的不能再熟悉,新建表的时候怎么着都知道先来个主键索引,对于经常查询的列也会加个索引加快查询速度.那么 MYSQL 索引都有哪些类型呢?索引结构是什么样的呢? ...

  3. mysql 联合索引详解

    mysql 联合索引详解 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c). ...

  4. mysql六:索引原理与慢查询优化

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  5. mysql 联合索引 性能_mysql:联合索引及优化

    命名规则:表名_字段名 1.需要加索引的字段,要在where条件中 2.数据量少的字段不需要加索引 3.如果where条件中是OR关系,加索引不起作用 4.符合最左原则 尽量不要用or,如果可以用un ...

  6. mysql从删库到跑路 亚马逊_Amazon RDS 上的 MySQL 的已知问题和限制 - Amazon Relational Database Service...

    Amazon RDS 上的 MySQL 的已知问题和限制 下面给出了有关对 Amazon RDS 使用 MySQL 的已知问题和限制. 不一致的 InnoDB 缓冲池大小 对于 MySQL 5.7,管 ...

  7. 索引体积_第16期:索引设计(MySQL 的索引结构)

    上一章讲了数据库基本上都用 B+ 树来存储索引的原因:适合磁盘存储,能够充分利用多叉平衡树的特性,磁盘预读,并且很好的支持等值,范围,顺序扫描等.这篇主要介绍 MySQL 两种常用引擎,MyISAM ...

  8. 解读mysql的索引和事务的正确姿势

    一.索引是做什么的? 很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引. 大多数MySQL索引(PRIMARY KEY.UNIQUE.INDEX和FULLTEXT)在B树中存储 ...

  9. 解读mysql的索引和事务的正确姿势 1

    一.索引是做什么的? 很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引. 大多数MySQL索引(PRIMARY KEY.UNIQUE.INDEX和FULLTEXT)在B树中存储 ...

最新文章

  1. 用jstat摸清JVM线上系统情况
  2. centos8 安装mysql8.0
  3. 【渝粤题库】广东开放大学mysql数据库及应用 形成性考核 - 副本 (5)
  4. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_15_注解_自定义注解_属性定义...
  5. 统计学和python_深入浅出统计学系列python实现
  6. Linux缺少libaio包
  7. 华为平板解锁工具_华为平板M6 10.8英寸首发评测 办公+影音+智能全面开花
  8. 2.3 The 10-armed Testbed 10摇臂老虎机试验台
  9. ios Reading from private effective user settings
  10. espnet中的transformer和LSTM语言模型对比实验
  11. el-checkbox点击一个其他的全部都选中了
  12. python 查tensorflow版本_查看已安装tensorflow版本
  13. Linux 常用命令整理(Centos7) (时区/正则/sed/htop/screen/ln/awk/……)
  14. HTMLCSS仿京东详情页静态页面制作总结
  15. 取消高速省界收费站驶入“快车道”,我们距智能交通还有多远?
  16. linux下设置定时执行脚本
  17. SAP ZSD008:Change SO Item Split
  18. 深圳白领辞职开办“淘智网”
  19. 《致我们终将逝去的青春》经典语录
  20. Linux 下分区表的备份与恢复

热门文章

  1. 基于yammer metrics 开发InfluxReport
  2. Qt中操作excel
  3. 程序员的自我修养--编译链接资料收集
  4. 互联网版权免责声明之深入
  5. Flex 相关电子书籍下载链接收录
  6. 2014美图产品笔试
  7. 3年去过6次青岛的人,告诉你怎样玩青岛
  8. (很全面)综述---图像处理中的注意力机制
  9. 小白学习Java第四十天
  10. EDIUS 8中如何快速打开特效面板