目前的业务是根据插入时间的倒序查询出视频的观看记录。
目前测试环境:观看记录表有 6千万,正式环境已经破亿,用户有十几万
select
字段
from 观看记录表 t
inner join 用户表 u on (t.user_id = u.id )
left join 单位表 d on (u.unit_id = d.id)
ORDER BY t.create_time DESC
limit 20
在正式环境,单独查询 20 条数据就要 900秒。关联用户表和单位表是因为还有一些查询条件是关于这两个表的。 目前该有的索引都有
有没有大老指点下,目前这个业务应该怎么优化这个sql
如果把观看记录表更改成子查询,效率飞快,但是用户表和单位表的条件应该怎么加
select
字段
from (
select id from 观看记录表
ORDER BY t.create_time DESC
limit 20
) t
inner join 用户表 u on (t.user_id = u.id )
left join 单位表 d on (u.unit_id = d.id)