一, 索引原理
1, 介绍
为何要有索引?
一般的应索引是应用程序设计和开发的一个重要方面. 若索引太多, 应用程序的性能可能会受到影响. 而索引太少, 对查询性能又会产生影响, 要找到一个平衡点, 这对应用程序的性能至关重要. 一些开发人员总是在事后才想起添加索引 ---- 我一直认为, 这源于一种错误的开发模式. 如果知道数据的使用, 从一开始就应该在需要处添加索引. 开发人员往往对数据库的使用停留在应用的层面, 比如编写 SQL 语句, 存储过程之类, 他们甚至可能不知道索引的存在, 或认为事后让相关 DBA 加上即可. DBA 往往不够了解业务的数据流, 而添加索引需要通过监控大量的 SQL 语句进而从中找到问题, 这个步骤所需的时间肯定是远大于初始添加索引所需的时间, 并且可能会遗漏一部分的索引. 当然索引也并不是越多越好, 我曾经遇到过这样一个问题: 某台 MySQL 服务器 iostat 显示磁盘使用率一直处于 100%, 经过分析后发现是由于开发人员添加了太多的索引, 在删除一些不必要的索引之后, 磁盘使用率马上下降为 20%. 可见索引的添加也是非常有技术含量的. 用系统, 读写比例在 10:1 左右, 而且插入操作和一般的更新操作很少出现性能问题, 在生产环境中, 我们遇到最多的, 也是最容易出问题的, 还是一些复杂的查询操作, 因此对查询语句的优化显然是重中之重. 说起加速查询, 就不得不提到索引了.
什么是索引?
索引在 MySQL 中也叫做 "键", 是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键, 尤其是当表中的数据量越来越大时, 索引对于性能的影响愈发重要. 索引优化应该是对查询性能优化最有效的手段了. 索引能够轻易将查询性能提高好几个数量级. 索引相当于字典的音序表, 如果要查某个字, 如果不使用音序表, 则需要从几百页中逐页去查.
你是否对索引存在误解?
索引是应用程序设计和开发的一个重要方面. 若索引太多, 应用程序的性能可能会受到影响. 而索引太少, 对查询性能又会产生影响, 要找到一个平衡点, 这对应用程序的性能至关重要. 一些开发人员总是在事后才想起添加索引 ---- 我一直认为, 这源于一种错误的开发模式. 如果知道数据的使用, 从一开始就应该在需要处添加索引. 开发人员往往对数据库的使用停留在应用的层面, 比如编写 SQL 语句, 存储过程之类, 他们甚至可能不知道索引的存在, 或认为事后让相关 DBA 加上即可. DBA 往往不够了解业务的数据流, 而添加索引需要通过监控大量的 SQL 语句进而从中找到问题, 这个步骤所需的时间肯定是远大于初始添加索引所需的时间, 并且可能会遗漏一部分的索引. 当然索引也并不是越多越好, 我曾经遇到过这样一个问题: 某台 MySQL 服务器 iostat 显示磁盘使用率一直处于 100%, 经过分析后发现是由于开发人员添加了太多的索引, 在删除一些不必要的索引之后, 磁盘使用率马上下降为 20%. 可见索引的添加也是非常有技术含量的.
- 2,
来源: http://www.bubuko.com/infodetail-2865738.html