优化前
SELECT m.id,m.channel_id,m.sender_id,m.create_at,m.type,m.content,m.file_id,m.create_at ,
u.name,u.nickname,u.online_status,u.avatar_url,u.name_first_let服务器托管网ter,
f.name AS file_name,f.extension,f.size,f.mime_typ,f.width,f.height,f.path,f.thumb_width,f.thumb_height
FROM im_message m INNER JOIN t_im_user u
ON m.sender_id=u.id LEFT JOIN im_file f ON m.fil服务器托管网e_id=f.id
WHERE m.channel_id= ‘b9f090a0bf30428da5a9ce7e3e3772ca’ AND delete_at=0
and m.create_at
ORDER BY m.create_at desc
LIMIT 20
使用explain进行查看sql执行情况如下:
可以看到Extra一栏里面的Using temporary; Using filesort,使用了临时表和filesort排序,当查询数量过多,或者排序没有正确使用索引都会出现Using temporary,导致大量的IO操作严重影响查询性能。
优化查询语句,使用FORCE INDEX强制使用索引。
优化后
SELECT m.id,m.channel_id,m.sender_id,m.create_at,m.type,m.content,m.file_id,m.create_at ,
u.name,u.nickname,u.online_status,u.avatar_url,u.name_first_letter,
f.name AS file_name,f.extension,f.size,f.mime_typ,f.width,f.height,f.path,f.thumb_width,f.thumb_height
FROM im_message m FORCE INDEX(order_index) INNER JOIN t_im_user u
ON m.sender_id=u.id LEFT JOIN im_file f ON m.file_id=f.id
WHERE m.channel_id= ‘b9f090a0bf30428da5a9ce7e3e3772ca’ AND delete_at=0
and m.create_at
ORDER BY m.create_at desc
LIMIT 20
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 云原生周刊:Microcks 成为 CNCF 沙箱项目
开源项目推荐 Kubent Kube No Trouble (kubent) 是一个简单的工具,该工具将能够根据您部署资源的方式检测已弃用的 API。 kdoctor kdoctor 是一个数据面测试的云原生项目,源于生产运维实践。通过压力注入,实现对集群功能…