如何解决sql server中获取结果的延迟问题?

时间:2012-06-21 07:01:27

标签: sql sql-server

我创建了以下视图,

SELECT     
   currency_cd, SUM(comprate) AS salary, employee_code,
   (SELECT SUM(c.comprate) AS Expr1
    FROM dbo.employees_compensation AS c 
    INNER JOIN
       (SELECT MAX(id) AS id, comp_ratecd
        FROM dbo.employees_compensation
        WHERE (effdt = (SELECT MAX(effdt) AS Expr1
               FROM dbo.employees_compensation AS employees_compensation_1
               WHERE (employee_code = b.employee_code)
              )
       ) AND (employee_code = b.employee_code)
    GROUP BY 
       comp_ratecd) AS a ON c.id = a.id) AS salary1
FROM 
   dbo.employees_compensation AS b
GROUP BY 
   currency_cd, employee_code

工作正常并给出了预期的结果。但问题是执行和给出结果需要时间。有时它也会出现错误,如Timeout等。你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

也许你应该重组你的数据库?例如,创建将表示联接的表。 如果您不关心计时,可以通过创建 temprorary表虚拟表(aka views)来避免超时错误。 避免使用这种复杂且嵌套的表达式。