博客
关于我
mysql索引
阅读量:788 次
发布时间:2023-02-13

本文共 969 字,大约阅读时间需要 3 分钟。

什么是索引

1. 索引的定义

索引(Index)是MySQL高效数据检索的重要工具。简单理解:索引是一种排好序的快速查找数据结构,帮助数据库在数据中快速定位所需记录。

2. 索引的类型(结构)

索引可分为以下几种类型:

  • FULLTEXT 全文索引:用于支持全文检索功能,适用于需要对文本内容进行全局搜索的场景。
  • HASH 哈希索引:通过哈希算法快速定位数据,适合高并发读取场景。
  • BTREE B树索引:常用作聚集索引、次要索引、覆盖索引等,B+树结构支持范围查询。
  • RTREE:用于空间数据索引,常见于地理信息系统。

3. 索引种类

索引可根据字段特性分为以下几种:

  • 单值索引:只包含单一字段,一个表可有多个单列索引。
  • 唯一索引:索引字段值必须唯一,可含空值。
  • 复合索引:包含多个字段的联合索引,适合高频查询条件。

索引的作用

  • 提高数据检索效率:减少数据库IO运算,降低查询响应时间。
  • 降低数据排序成本:减少CPU负载,提升整体系统性能。

索引的使用

1. 创建索引的场景

  • 主键自动建立唯一索引:主键字段通常自动生成唯一索引。
  • 高频查询字段:对经常作为查询条件的字段创建索引。
  • 外键关系索引:对外键字段建立索引,提升关联查询效率。
  • 索引选择与组合:在高并发环境中,通常优先选择组合索引。
  • 排序字段索引:对排序操作的字段建立索引。
  • 统计或分组字段索引:对分组或统计操作的字段建立索引。

2. 不要创建索引的情况

  • 表记录少于5000条:索引对小数据集无明显效率提升。
  • 频繁增删改的表:索引会增加数据修改的复杂性。
  • 数据重复且分布均匀的字段:重复数据的字段索引效果有限。
  • 频繁更新的字段:索引会对更新操作造成额外负担。

索引失效的情况

索引失效会导致全表扫描,影响查询性能。以下情况会导致索引失效:

  • 索引列进行计算或函数操作:如CONCATNOW()等操作。
  • 使用select *:会导致索引失效,提升全表扫描效率。
  • 使用!=<>:如WHERE a != 'b'等不等于操作。
  • IS NULLIS NOT NULL:无法利用索引进行查询。
  • LIKE以通配符开头:如'abc%''_abc'
  • 字符串字段未加单引号:会导致索引失效。
  • 少用OR连接条件:使用OR会导致索引失效。

通过合理设计索引,可以显著提升数据库查询效率,优化系统性能。

转载地址:http://txdfk.baihongyu.com/

你可能感兴趣的文章
MySQL外键约束
查看>>
MySQL多表关联on和where速度对比实测谁更快
查看>>
MySQL多表左右连接查询
查看>>
mysql大批量删除(修改)The total number of locks exceeds the lock table size 错误的解决办法
查看>>
mysql如何做到存在就更新不存就插入_MySQL 索引及优化实战(二)
查看>>
mysql如何删除数据表,被关联的数据表如何删除呢
查看>>
MySQL如何实现ACID ?
查看>>
mysql如何记录数据库响应时间
查看>>
MySQL子查询
查看>>
Mysql字段、索引操作
查看>>
mysql字段的细节(查询自定义的字段[意义-行列转置];UNION ALL;case-when)
查看>>
mysql字段类型不一致导致的索引失效
查看>>
mysql字段类型介绍
查看>>
mysql字段解析逗号分割_MySQL逗号分割字段的行列转换技巧
查看>>
MySQL字符集与排序规则
查看>>
MySQL字符集乱码
查看>>
mysql存储IP地址的数据类型
查看>>
mysql存储中文 但是读取乱码_mysql存储中文乱码
查看>>
MySQL存储引擎--MyISAM与InnoDB区别
查看>>
mysql存储总结
查看>>