mysql 多表查询优化

blue_ma 发布于 2017/04/05 13:11
阅读 175
收藏 0

sql 语句如:

SELECT
    `t`.*, `u`.`mobile`,
    `r`.`realname`,
    `b`.`bind_type`
FROM
    `t_trade_order` `t`
LEFT JOIN `t_user` `u` ON `u`.`uid` = `t`.`uid`
LEFT JOIN `t_user_identity` `r` ON `r`.`uid` = `t`.`uid`
LEFT JOIN `t_user_bind_company` `b` ON `b`.`uid` = `t`.`uid`
AND `b`.`companyid` = `t`.`companyid`
WHERE
    1 = 1
AND `t`.`touzhi_time` >= '2017-03-01 00:00:00'
AND `t`.`touzhi_time` <= '2017-03-31 23:59:59'
ORDER BY
    `t`.`id` DESC

我在explain之后如图:

本来t_trade_order的touzi_time 没有索引,我给建了个普通btree的索引,没见效果,几乎还是全表扫描。

加载中
0
blue_ma
blue_ma

现在是一次查询需要4到5S。这样的一次操作体验性太差,我将where的条件改为 1 = 1
AND `t`.`touzhi_time` = '2017-03-01 15:23:06' 的时候发现用到了索引,难道是条件是判断touzhi_time 时间区间导致没用上索引?能否各位给出优化的方法,不论是加索引还是改sql语句,希望能将查询时间降低在1S以内,谢谢了,表内的数据并不大。

0
Tuesday
Tuesday

字段都做成这样了, 还谈什么优化? 

0
blue_ma
blue_ma

引用来自“Tuesday”的评论

字段都做成这样了, 还谈什么优化? 

刚入职新公司,历史遗留问题

返回顶部
顶部