经常碰到类似这样的语句
假设有5个表,每个表都是500万左右的记录
表名是a,b,c,d,e
语句如下
select a.id
from a
left join b on a.id=b.id
left join c on c.custno=d.custno
left join d on d.name=e.name and e.startdate>='20171026'
假设表上语句where字段上的索引都有,统计信息也是最新的,
请问这样的语句如何优化?
这种语句很难优化,因为你的逻辑已经固定了,执行效率关键看e.startdate>‘20171026’这个条件能过滤出来的记录数,如果记录很少,效率也还可以接受,如果这个条件过滤出来的记录数过大,那么这个语句执行时间就会很长;或者接受,或者更高业务逻辑。
收起