记录背景
客户反映系统的用户统计模块报504网关超时错误,在用本地服务器运行项目,发现确实如此。
原因在于每个项目查询需要2-3秒,几十项目的查询时间就超过一分钟,而nginx设置的超时时间为60秒,所以出现了客户提到的现象。解决方法有两个,一是提高nginx的超时时间,二是优化sql的查询效率,于是选择了后者。
优化的大致思路
加索引,优化sql语句
当你发现做了上述两件事后并没有改善
可以通过explain来辅助找问题
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
使用方法,在select语句前加上explain就可以了
效率低的sql语句
SELECT
*
FROM
wy_member a , wy_room_view b
WHERE
(
a.room_id IS NOT NULL
AND a.room_id != ''
)
AND a.appid = 'wx64*********'
AND a.`status` = 1
AND a.member_type = '1'
AND b.WYID = '43'
and a.room_id = b.roomId
查询用时2.479s
explain 结果
<