mysql join count 优化案例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql join count 优化案例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2308字,纯文字阅读大概需要4分钟。
内容图文
![mysql join count 优化案例](/upload/InfoBanner/zyjiaocheng/447/57c55d19dfca4bfba511dd01cd3a2715.jpg)
记录一个优化sql的实际案例
三张表, 表结构, 索引如下:
tb_phoneback_apply有user_id, handle_userid 索引 以及一个 status 和 create_time组合索引.
----------------------------优化前sql----------------------------
SELECT
a.id,
IFNULL(u.user_name, u.user_tel) AS userName,
u.user_tel AS userPhone,
u.user_email AS userEmail,
a.create_time AS applyTime,
a.phone,
a.`status`,
IFNULL(su.`name`, su.login_name) AS handleUser,
a.handle_time AS handleTime
FROM tb_phoneback_apply a
LEFT JOIN tb_user u ON a.user_id = u.Id
LEFT JOIN tb_sys_user su ON su.id = a.handle_userid
ORDER BY a.`status` DESC, a.create_time DESC
LIMIT 0, 10
----------------------------优化后sql-------------------------------------------------------------------------------------
SELECT
a.id,
IFNULL(u.user_name, u.user_tel) AS userName,
u.user_tel AS userPhone,
u.user_email AS userEmail,
a.create_time AS applyTime,
a.phone,
a.`status`,
IFNULL(su.`name`, su.login_name) AS handleUser,
a.handle_time AS handleTime
FROM
(SELECT id, user_id, handle_userid, create_time, phone, `status`, handle_time
FROM tb_phoneback_apply l
ORDER BY l.`status` DESC, l.create_time DESC
LIMIT 0, 10) a
LEFT JOIN tb_user u ON a.`user_id` = u.`Id`
LEFT JOIN tb_sys_user su ON su.id = a.`handle_userid`
ORDER BY a.`status` DESC, a.create_time DESC
----------------------------count优化前sql----------------------------
----------------------------count优化后sql----------------------------
<select id="cntPhoneBacks" parameterType="map" resultType="int">
SELECT COUNT(a.id)
FROM tb_phoneback_apply a
<if test="userName != null or userPhone!= null or userEmail != null">
RIGHT JOIN (SELECT id
FROM tb_user
<where>
<if test="userName != null">u.user_name = #{userName}</if>
<if test="userPhone != null">AND u.user_tel = #{userPhone}</if>
<if test="userEmail != null">AND u.user_email = #{userEmail}</if>
</where>
) u ON u.id = a.user_id
</if>
<where>
<if test="handleStatus != null">AND a.`status` = #{handleStatus}</if>
</where>
</select>
mysql join count 优化案例
标签:一个 stat sele 图片 order by time bsp sys image
本文系统来源:https://www.cnblogs.com/-xuzhankun/p/13999020.html
内容总结
以上是互联网集市为您收集整理的mysql join count 优化案例全部内容,希望文章能够帮你解决mysql join count 优化案例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。