MySQL(四)查询性能优化

Explain

用来分析 SQL 语句,分析结果中比较重要的字段有:

– select_type : 查询类型,有简单查询、联合查询和子查询

– key : 使用的索引

– rows : 扫描的行数

减少返回的列

慢查询主要是因为访问了过多数据,除了访问过多行之外,也包括访问过多列。

最好不要使用 SELECT * 语句,要根据需要选择查询的列。

减少返回的行

最好使用 LIMIT 语句来取出想要的那些行。

还可以建立索引来减少条件语句的全表扫描。例如对于下面的语句,不使用索引的情况下需要进行全表扫描,而使用索引只需要扫描几行记录即可,使用 Explain 语句可以通过观察 rows 字段来看出这种差异。

SELECT * FROM sakila.film_actor WHERE film_id = 1;

拆分大的 DELETE 或 INSERT 语句

如果一次性执行的话,可能一次锁住很多数据、占满整个事务日志、耗尽系统资源、阻塞很多小的但重要的查询。

DELEFT FROM messages WHERE create < DATE_SUB(NOW(), INTERVAL 3 MONTH);
rows_affected = 0
do {
    rows_affected = do_query(
    "DELETE FROM messages WHERE create  < DATE_SUB(NOW(), INTERVAL 3 MONTH) LIMIT 10000")
} while rows_affected > 0
本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » MySQL(四)查询性能优化

Leave a Reply

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多