我遇到了一个小问题,
这是一个演示查询。
所以,假设
有没有办法减少这个时间?
如果有人对实际查询感兴趣,请访问http://pastebin.com/zqzbpEei
这是一个演示查询。
select
A.order_id,
if(
A.production_date != '0000-00-00',
A.production_date,
if(
SOME INNER QUERY != '0000-00-00',
SOME INNER QUERY ,
SOME OTHER INNER QUERY
)
) as production_start_date
from
orders A
所以,假设
SOME INNER QUERY
花费了10秒钟进行计算,从8个不同的表中获取数据,检查相同订单类型的历史记录等,并且如果其结果是一个日期,则在第一个条件中获取该日期。但现在它将需要20秒,因为需要10秒钟计算if条件,再用10秒钟重新执行以返回结果。有没有办法减少这个时间?
如果有人对实际查询感兴趣,请访问http://pastebin.com/zqzbpEei
FROM
子句中的LEFT JOIN
。这样做有两个可能会提高效率的原因:1.它们不必计算两次,2.它们不必为每一行“订单”运行一次。 - ypercubeᵀᴹ