如果查询结果集没有使用由子查询或视图生成的字段,那么该字段是否仍然会被子查询处理?我的数据库中有很多视图,它们在许多地方都被使用,但所需的确切字段集因上下文而异。为了避免在每个上下文中重复相似的查询(具有适当的字段组),我一直在使用可能包含每个上下文的额外字段的视图。看起来这些额外视图会影响MySQL的性能(在下面的示例中,通过删除示例中的额外字段,我体验到了四分之一的性能提升)。有什么解决方法吗?不同的数据库(如Oracle)?
请参见下面的示例;即使在运行视图时可以明显跳过charge_off_date字段,但它仍会影响性能。
请参见下面的示例;即使在运行视图时可以明显跳过charge_off_date字段,但它仍会影响性能。
select
l.loan_id, last_payment_date
from
loans as l
left join
(select
loan_id,
max(ph.received_d) as last_payment_date,
max(case
when ph.co = 1 then coalesce(ph.received_d, ph.month)
else null
end) as charge_off_date
from
payment_history as ph) as payment_stats ON payment_stats.loan_id = l.loan_id
SHOW CREATE TABLE
和EXPLAIN SELECT ...
吗? - Rick James