1、优化数据访问
查询性能低下的原因是访问的数据太多,原因通常是:
1.通常是访问了太多的行,尤其是没有必要的行,或者是访问了太多的列。
2.确认MySQL服务器层分析是否存在大量超过需要的数据行。
这些不必要的查询,给MySQL服务器带来了额外的负担,并增加了网络开销l,另外也会消耗应用服务器的cpu和内存资源。
举例说明:
1.一个常见的错误是常常会误以为MySQL会只返回需要的数据,实际上MySQL却是先返回全部结果集再进行计算。
select * from mytableA limit 10000,20;
-- 以上SQL你认为MySQL会执行查询,并只返回他们需要的20条数据,然后停止查询
-- 实际情况是MySQL会查询出全部的结果集,客户端的应用程序会接收全部的结果集数据,然后抛弃其中不需要的数据
响应时间:服务时间和排队时间之和
1.服务时间:指数据库处理查询真正花的时间。
2.排队时间:指服务器因为等待某些资源而没有真正执行查询的时间—-可能是等I/O操作完成,也可能是等待行锁,等
执行计划详解
1.id : 在一个大的查询语句中每个SELECT关键字都对应一个唯一的id。
2.select_type : SELECT关键字对应的那个查询的类型。
3.table :表名
4.partitions :匹配的分区信息。
一般情况下我们的查询语句的执行计划的partitions列的值都是NULL
5.type :针对单表的访问方法。
6.possible_keys :可能用到的索引
7.key :实际上使用的索引
8.key_len :实际使用到的索引长度
9.ref :当使用索引列等值查询时,与索引列进行等值匹配的对象信息
10.rows :预估的需要读取的记录条数
11.filtered :某个表经过搜索条件过滤后剩余记录条数的百分比
12.Extra :—些额外的信息
未完待续