1.基本原则:优化数据访问
(1)是否想服务器请求了不需要的数据?提取超过需要的列,多表连接时提取所有列,提取所有列都会消耗不必要的资源,提取你所需要的列就可以了。
(2)MySQL检查了太多的数据吗?通过查看执行时间,查看检查和返回的行,查看检查的行和访问类型,用expain分析。
2.重构查询的方式
(1)复杂查询和多个查询。将复杂的查询分解成多个简单的查询。
(2)缩短查询。也就是分治法,每次只执行一小部分,以减少受影响的行数。
(3)分解联接。把一个多表联接的查询分解成多个单查询,然后在应用程序端实现联接操作。
3.MySQL客户端/服务器协议
半双工的,不能同时接收和发送。数据是有服务器端推送给客户端的。查询状态:休眠,查询,锁定,分析和统计,拷贝到磁盘上的临时表,排序结果,发送数据。
4.MySQL查询优化过程
5.优化特定类型的查询
(1)优化cout。只使用一个查询统计同一列中不同值的数量,以减少查询的数量。例如:如果使用的是MyISAM存储引擎,因为它的每个表示记录了总行数的,
select count(*) from table where id >5;改成select (select count(*) from table)-count(*) from table where id <=5;会要少扫描很多行。
(2)优化联接。确保on或using使用的列上有索引。确保goup by或order by只引用了一个表中的列。
(3)优化子查询。
(4)优化group by和distinct。
(5)优化limit和offset。
(6)优化SQL_CALC_FOUND_ROWS。
(7)优化联合。
<-未写完,明天接着写->
时间: 2024-12-26 11:18:06