网站数据多了,同一个查询越来越慢,页面卡、接口超时。多半是没走索引或SQL写得差。MySQL的EXPLAIN能告诉你查询怎么执行的、走了哪些索引。小编实测用EXPLAIN分析、加对索引,慢查询几秒变毫秒。这篇讲查询优化和EXPLAIN怎么用。
数据库优化也吃主机性能,这两家海外主机的CPU和内存都够给力:Vmrack(海外服务器)、Moack(云主机)。

先看是不是慢查询
MySQL开了慢查询日志,超过阈值的SQL会被记下来。打开slow_query_log,设个阈值(如long_query_time 1秒)。跑一段再看日志,把慢SQL挑出来。先定位哪些查询慢,再针对性优化。别瞎优化,先找到真凶。

EXPLAIN怎么看
在慢SQL前加EXPLAIN,MySQL返回执行计划。重点看type(访问类型)和key(用的索引)。type是ALL(全表扫描)就要优化,最好到ref/range。rows是扫描行数,越小越好。EXPLAIN一眼看出查询哪里慢。

加对索引是关键
慢查询多半缺索引。在WHERE、ORDER BY、JOIN的字段上加索引,CREATE INDEX。联合索引按最左前缀原则建。别在所有字段都加索引,写入会变慢。加对索引,查询速度天差地别。

SQL本身也要优化
别用SELECT *,只取要的字段。避免在索引字段上用函数(会失效)。大表分页用ID代替LIMIT大偏移。JOIN别乱用,子查询注意。该有的条件加上。SQL写得好,加上索引才事半功倍。

别忘整体优化
配置缓冲(如innodb_buffer_pool_size)要大一点,减少磁盘读。读多还能配主从分离。定期检查慢日志看有没有新问题。优化是持续的,数据涨了再查再优化。查询快了,网站整体就快。

总结:开慢查询日志定位、用EXPLAIN看执行计划、加对索引、SQL本身优化、整体缓冲配置,MySQL慢查询就能搞定。查询快起来,网站体验上一个台阶。



下载 
下载 
下载
下载 
下载
喜欢
顶
难过
囧
围观
无聊



