美文网首页
第6章 数据库索引优化

第6章 数据库索引优化

作者: 马_黎 | 来源:发表于2018-08-30 00:56 被阅读0次

MySQL的索引优化

MySQL支持的索引类型

B-tree的特点

  • 加快查询的速度
  • 更适合返回查找
enter description here

什么情况下用到B-tree

  • 全值匹配查询
  • 匹配最左前缀的查询
  • 匹配列前缀的查询
  • 匹配范围查找
  • 精确匹配左前并方位匹配另外一列
  • 只访问索引的查询

B-tree的限制

  • 如果是按照索引的最左列开始查找的,则无法使用索引
  • 使用索引时不能跳过索引中的列
  • Not in 和 <> 无法使用索引
  • 如果查询中又某个列的范围查询,则右边的列都无法使用索引

Hash索引

特点

基于Hash表实现的,只能查询条件精确的匹配。

对于Hash索引中所有的列,存储引擎都会为每一行计算一个Hash码,Hash索引中存放的就是Hash码。

限制

enter description here
  • Hash索引必须进行二次查找。

  • Hash索引无法用于排序

  • 只能进行全值匹配,不支持范围查找。不选择列重复的字段上加这个索引。

联合索引

什么是联合索引:

联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。

注意:

1、需要加索引的字段,要在where条件中
2、数据量少的字段不需要加索引
3、如果where条件中是OR关系,加索引不起作用
4、符合最左原则

如何选择索引列的顺序?

  • 经常被使用到的列优先(经常查询的放在最左面)
  • 选择性能高的列优先
  • 宽度小的列优先

覆盖索引

优点

  • 可以优化缓存,减少磁盘I/o
  • 可以减少随机I/O,将随机IO变成顺序IO
  • 可以避免对Innodb主键引起的二次查询
  • 可以避免MYISAM表进行系统调用

缺点

  • 存储引擎不支持覆盖索引
  • 查询使用了太多的列
  • 使用率了%like%查询

使用索引来优化查询

利用索引优化锁

  • 索引可以减少锁定的行数
  • 可以加快处理的速度,同时也加快了锁的释放

删除重复和冗余的索引

定期更新索引的统计信息以及减少索引碎片

analyze table table_name
建立了主键索引就没必要创建唯一索引了

代码实例

覆盖查询 查询所有的数据是无法使用覆盖索引的

使用索引引来优化索引

使用索引扫描来优化排序

  • 索引顺序和Order By 的子句的循序完全一致
  • 索引中所有的方向(升序、降序)和Order by 子句完全一致
  • Order by 中的字段全部在关联中的第一张表中

为什么使用索引

  • 加上存储引擎需要扫描数据的数量
  • 避免我们使用临时表
  • 可以把随机I/O变成顺序I/O

索引不是越多越好

  • 索引会增加写操作成本
  • 太多的索引会增加查询优化器选择的时间

索引优化策略

image image

相关文章

  • 数据库存储原理特性索引优化

    说一下mysql数据库存储的原理? 事务的特性? 数据库索引 数据库怎么优化查询效率? 数据库优化方案 优化索引、...

  • 数据库索引创建与优化

    对于数据库的优化主要包括三个部分:查询优化、索引优化和字段类型优化,其中,索引优化则是数据库优化的重中之重。一个查...

  • DB

    ACID 优化查询 三范式 Mysql索引 设计表的一些经验 数据库的优化 索引3问

  • 数据库复习指南

    索引分析工具:explain 数据库优化。表很大之后,insert变得很慢,如何优化? 缓存; 分库分表; 索引;...

  • MySQL(4)应用优化

    MySQL应用优化 4.1-MySQL索引优化与设计 索引的作用 快速定位要查找的数据 数据库索引查找 全表扫描 ...

  • MySQL索引原理详解

    学习MySQL数据库索引原理知识,同时了解与性能相关的优化实践。 讲述关于索引的原理,为后面数据库优化提供合适的方...

  • 数据库的性能优化

    建立索引数据库优化第一步就是建立合理的索引,这也是最初级的优化,也是DBA常用的优化方案!MySql索引类型有:普...

  • Mysql 优化提纲

    SQL & 索引 通过慢日志找到待优化的SQLs; explain 查询分析SQL执行计划; 索引优化; 数据库结...

  • MySQL优化框架

    1,SQL语句优化 2,索引优化 3,数据库结构优化 4,InnoDB表优化 5,MyISAM表优化 6,Memo...

  • 数据库索引学习笔记

    数据库索引学习笔记 数据库索引优化是后台开发必备的技能,本文记录下学习数据库索引的一些心得。 MyISAM和Inn...

网友评论

      本文标题:第6章 数据库索引优化

      本文链接:https://www.haomeiwen.com/subject/bmdlwftx.html