原始SQL:
select * from a
join b
on a.ID=b.AID
where a.age>18 and b.IsDelete=0
请问这种SQL会被数据库优化成下边这样吗?
[先筛选出符合的记录再join]
select * from
(select * from a where a.age>18) a
join
(select * from b where b.IsDelete=0) b
on a.ID=b.AID
我用的是MYSQL,请问它会优化吗?
如果查询引擎能够这么自动,那么很多最佳实践的书就不会有市场了。
别老想着偷懒,多根据实际执行计划实验,老老实实写最优的查询。
数据库不会自动帮你优化的,只能试试哪个查询快点用哪个
这两个SQL的执行效率应该差不多。
第一个SQL更好。
为什么说第一个更好?
@hexllo: 第一个给了数据库最大的优化的机会。