0

私は次のビューを作成しました、

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

正常に動作しており、期待どおりの結果が得られます。しかし、問題は、実行して結果を出すのに時間がかかることです。また、タイムアウトなどのエラーが発生することもあります。問題の解決にご協力いただけますか?

4

1 に答える 1

0

たぶんあなたはあなたのDBを再編成する必要がありますか?たとえば、結合を表すテーブルを作成します。タイミングを気にしない場合は、一時テーブルまたは仮想テーブル(別名ビュー)を作成することでタイムアウトエラーを回避できます。このような複雑でネストされた式は避けてください。

于 2012-06-21T07:10:20.677 に答える