这是一个表现问题。
假设我有以下mysql数据(超过1,000条相同结构的记录)
表名:小时
Employee | Hours | Scope | Project
John 4 labour projId_A
John 3 Travel projId_A
Mark 4 labour projId_A
Mark 2 Travel projId_A
如果我使用人工和旅行摘要进行一次查询来获得此
,这是否会有更好的表现?表名:项目(我会离开加入项目和时间)
Project | labourHrs | travelHrs
projId_A 8 5
或者我们最好
然后创建2个关节项目 - > labourH和项目 - > travelH
得到:
Project | labourHrs | travelHrs
projId_A 8 5
我想我在问,在项目查询中或在labour_view&内部进行总结是否更好? travel_view'
有什么想法吗?
答案 0 :(得分:3)
最好只进行一次查询:
select project
sum(case when score = 'labour' then hours else 0 end) as labourHrs,
sum(case when score = 'travel' then hours else 0 end) as travelhours
from t
group by project;
从MySQL的性能角度来看,视图不会提高性能。它们可能不会影响性能,但它们不会让它变得更好。
答案 1 :(得分:0)
视图通常用于隐藏数据或简化查询。使用您的第一个选项并在初始SQL中执行SUM。