msql查询或mysql视图

时间:2016-05-26 21:30:38

标签: mysql sql performance

这是一个表现问题。

假设我有以下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

或者我们最好

  1. 创建一个仅显示labourHrs的视图
  2. 创建一个仅显示travelHrs的视图
  3. 然后创建2个关节项目 - > labourH和项目 - > travelH

    得到:

    Project  |  labourHrs  |  travelHrs
    projId_A      8             5
    

    我想我在问,在项目查询中或在labour_view&内部进行总结是否更好? travel_view'

    有什么想法吗?

2 个答案:

答案 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。