Sql语句如下
select u.name,
u.user_id,
u.phone,
a.title,
a.address,
r.device_id,
r.type,
b.money,
b.pay_type,
r.create_time,
r.reward_money
from(
select device_id, out_trade_no, reward_money, type, c_address_id, create_time
from charge_reward_bill
where type=3 and user_id='100034' and create_time>='2018-02-13' and create_time
inner join charge_bill b on b.out_trade_no= r.out_trade_no and b.pay_time='2018-02-13' #如果把pay_time的限制条件加上反而更慢了
inner join device_address_change a on a.id= r.c_address_id
left join user_app_info u on u.user_id= a.user_id
order by r.create_time desc
limit 10000,10
charge_reward_bill数据量700W左右,charge_bill数据量200W左右,均已分库分表,device_address_change 和user_app_info 是2张小表。
目前来说,查询速度比较慢,第一个表不用子查询也会更慢
问题:charge_bill 这个表关联为什么加上时间的限制条件反而会更慢呢? pay_time上没有索引,字段类型为datetime
,求大佬们说说,或者给点优化思路