索引相似大学图书馆建书目索引,能够提升数据检索的效率,下降数据库的IO成本。MySQL在300万条记录左右性能开始逐渐降低,虽然官方文档说500~800w记录,因此大数据量创建索引是很是有必要的。MySQL提供了Explain,用于显示SQL执行的详细信息,能够进行索引的优化。sql
1、致使SQL执行慢的缘由:数据库
硬件问题。如网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等。服务器
没有索引或者索引失效。(通常在互联网公司,DBA会在半夜把表锁了,从新创建一遍索引,由于当你删除某个数据的时候,索引的树结构就不完整了。因此互联网公司的数据作的是假删除.一是为了作数据分析,二是为了避免破坏索引 )网络
数据过多(分库分表)数据结构
服务器调优及各个参数设置(调整my.cnf)运维
2、分析缘由时,必定要找切入点:性能
先观察,开启慢查询日志,设置相应的阈值(好比超过3秒就是慢SQL),在生产环境跑上个一天事后,看看哪些SQL比较慢。大数据
Explain和慢SQL分析。好比SQL语句写的烂,索引没有或失效,关联查询太多(有时候是设计缺陷或者不得以的需求)等等。优化
Show Profile是比Explain更近一步的执行细节,能够查询到执行每个SQL都干了什么事,这些事分别花了多少秒。spa
找DBA或者运维对MySQL进行服务器的参数调优。
3、什么是索引?
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。咱们能够简单理解为:快速查找排好序的一种数据结构。Mysql索引主要有两种结构:B+Tree索引和Hash索引。咱们日常所说的索引,若是没有特别指明,通常都是指B树结构组织的索引(B+Tree索引)。索引如图所示: