mysql查询优化
Posted l2c
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql查询优化相关的知识,希望对你有一定的参考价值。
1.查询性能低下最基本的原因是访问的数据太多。访问了太多的行,有时候也可能是访问了太多的列。
2.请求超过实际需要的数据:1.查询不需要的记录 limit杜绝2.多表关联时返回全部列 3.总是取出全部列 无法完成索引覆盖这类优化,但并不总是坏事
3.重复查询相同的数据,注意缓存
响应时间:服务时间+排队时间(等待I/O,锁等)
扫描的行数:
1.并不完美的指标:不是所有的行的访问代价都是相同的,比如 较短的行的访问速度更快,内存中的行也比磁盘中的行的访问速度要快得多
2.访问类型:在explain语句中的type列反应了访问类型。访问类型有很多种,从全表扫描到索引扫描,范围扫描,唯一索引查询,常数引用等。速度从慢到快,扫描行数从小到大。
一般mysql能够使用如下三种方式应用where条件,从好到坏依次为:
1.在索引中使用where条件来过滤不匹配的记录,这是在存储引擎层完成的。
2.使用索引覆盖扫描(在Extra列中出现了Using index)来返回记录,直接从索引中过滤不需要的记录并返回命中的结果。这是在mySql服务器层完成的,但无须再回表查询记录
3.从数据表中返回数据,然后过滤不满足条件的记录(在Extra列中出现Using where)。这在mysql服务器层完成,mysql需要先从数据表读出记录然后过滤。
3.返回的行数
以上是关于mysql查询优化的主要内容,如果未能解决你的问题,请参考以下文章