数据库优化之索引优化

标签: 索引优化 数据库 优化 索引
22人阅读 评论(0) 收藏 举报
分类:

MySQL支持的索引类型

  • B-tree索引
  • Hash索引

B-tree索引

特点

  • 加快数据的查询速度
  • 更适合进行范围查找

原理

  • B+树的结构存储数据

适应范围

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

限制

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

Hash索引

特点

  • Hash索引时基于Hash表实现的,只有查询条件精确匹配Hash索引中的所有列,才能够使用Hash索引。
  • 对于Hash索引中的所有列,存储引擎都会为每一行计算一个Hash码,Hash索引中存储的就是Hash码

原理

  • key-vlaue

限制

  • 二次读取
  • 无法用于排序
  • 不支持部分索引查找也不支持范围查找
  • Hash码的计算可能存在Hash冲突

为什么要使用索引

  • 大大减少存储引擎需要扫描的数据量
  • 帮助我们进行排序避免使用临时表
  • 把随机I/O变为顺序I/O

索引是不是越多越好

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

相关链接
《 数据库优化之什么影响性能》《数据库优化之实例和故事 》《 数据库优化之结构设计》

作者:不动峰 出处:https://blog.csdn.net/qq_15413009
博客园:http://www.cnblogs.com/mylly/
版权所有,欢迎保留原文链接进行转载:)

查看评论

Mysql数据库优化系列(五)------索引优化策略之面试题

实验: Type:range   此处使用上了范围索引 Key_len:12/3=4列 使用到了索引c1,c2,c3,c4.解析:因为order by c3是有序的,所以c3,c4也用到了索引 ...
  • wuming19900801
  • wuming19900801
  • 2014-12-27 17:23:06
  • 1670

常用的数据库索引优化语句总结

近期,我们对之前编写的数据库脚本进行了全面的自查,从数据库的性能方面考虑,将脚本里面的很多SQL语句进行了优化。对于一条SQL语句来说,索引的使用是否正确将直接影响到数据库的性能,因此,对索引使用方法...
  • zhouzxi
  • zhouzxi
  • 2016-07-18 21:51:42
  • 7145

mysql数据库中的索引与优化

 本文主要讲述了如何加速动态网站的MySQL索引分析和优化。 一、什么是索引? 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从...
  • wml19860712
  • wml19860712
  • 2009-01-07 12:09:00
  • 3351

索引优化原则及Oracle中索引总结

索引优化原则及Oracle中索引总结 Oracle索引建立原则 确定针对该表的操作是大量的查询操作还是大量的增删改操作。尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在wh...
  • u014330421
  • u014330421
  • 2018-02-06 16:29:43
  • 178

数据库索引原理及优化

本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接。一、摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,...
  • suifeng3051
  • suifeng3051
  • 2016-09-26 14:30:10
  • 20463

面试总结(数据库范式、sql优化)

数据库范式        为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必...
  • yutianxin123
  • yutianxin123
  • 2016-08-24 22:03:36
  • 865

数据库性能优化一:SQL索引一步到位

SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱。   1.1 什么是索引?   SQL索引有两种,...
  • guochunyang
  • guochunyang
  • 2015-11-10 12:35:51
  • 2731

数据库索引的创建以及常见优化

如何使用数据库索引   使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。 什么是索...
  • txp1993
  • txp1993
  • 2014-12-08 14:39:52
  • 485

mysql 索引 优化 面试

mysql 索引 优化 面试题目: 问如何优化下面的Mysql SQL语句? select * from employee where employee.deptName in ( "depart...
  • bigtree_3721
  • bigtree_3721
  • 2017-05-18 17:37:57
  • 856

我和技术博客的这一年

本文记录了我从Java初学者到专注于Java后端开发技术栈的成长历程,主要是与写博客相关的内容,其他内容还包括实习历程,后端技术学习历程,校招计划等内容,我会陆续发表并且提供链接。Java后端学习之路...
  • a724888
  • a724888
  • 2017-03-08 19:32:08
  • 16528
    个人资料
    等级:
    访问量: 4514
    积分: 135
    排名: 116万+
    最新评论