下面说一下mysql查询优化的一些方法和技巧
一.查询慢的原因:
1.查询不需要的记录,如查询100条数据,结果应用程序仅仅使用前10条,mysql是先返回全部结果集然后在计算;这样使用limit来解决。
2.多表关联时候返回全部列
3.总是取回全部的列,如:select * from table
4.多次重复查询相同的数据
二.是否扫描额外的记录
对于mysql来衡量查询开销的指标如下:
1)响应时间(服务时间和排队时间之和)
2)扫描行数(理想情况,扫描行和返回行数相等)
3)返回行数
4)扫描行数和访问类型,EXPLAIN语句中type列反映了访问类型,全表扫描,索引扫描,范围扫描,唯一索引查询,常数引用,速度从慢到快,扫描行数从多到少,如果查询没有办法找到合适的访问类型,最好办法就是增加一个合适的索引。
三。重构查询方式
1.用多个简单查询代替一个复杂查询,mysql从设计上让连接和断开连接都是很轻量级,在返回一个小的查询方面很高效。
2.切分查询,将大的查询,分而治之,每个查询功能完全一样,只是完成一小部分,每次只是返回一小部分查询结果。
如:删除旧的数据例子,若一次性删除大量的数据,则会需要一次锁住很多数据,占满整个事务日志,耗尽系统资源,阻塞很小的但重要的查询。将一个大的DELETE语句切分成小的查询,尽可能小的影响mysql性能,同时减少复制的延迟。
如:DELETE FROM message WHERE created