あるテーブルから別のテーブルにデータをコピーしています。コピー中に、ある列を修正するための計算をしています。SQL Serverクエリを最適化する方法
SQL Serverクエリ:
INSERT INTO rat_proj_duration_map_2
SELECT
r.*,
r.hour_val/(CASE
WHEN week_val = 1 AND
(SELECT TOP 1
hrswk
FROM UserProfileRATinterface_view us
INNER JOIN users u
ON u.username = us.username
WHERE calwk = 2
AND r.uid = u.uid
AND yr = 2016)
> 0 THEN (SELECT TOP 1
hrswk
FROM UserProfileRATinterface_view us
INNER JOIN users u
ON u.username = us.username
WHERE calwk = 2
AND r.uid = u.uid
AND yr = 2016)
WHEN (SELECT
hrswk
FROM UserProfileRATinterface_view us
INNER JOIN users u
ON u.username = us.username
WHERE r.week_val = us.calwk
AND r.uid = u.uid
AND yr = 2016)
< 1 AND
(SELECT
MAX(hrswk)
FROM UserProfileRATinterface_view us
INNER JOIN users u
ON u.username = us.username
WHERE r.uid = u.uid
AND yr = 2016)
> 0 THEN (SELECT
MAX(hrswk)
FROM UserProfileRATinterface_view us
INNER JOIN users u
ON u.username = us.username
WHERE r.uid = u.uid
AND yr = 2016)
WHEN (SELECT
COUNT(*)
FROM UserProfileRATinterface_view us
INNER JOIN users u
ON u.username = us.username
WHERE r.uid = u.uid
AND yr = 2016)
<= 0 THEN 1
ELSE (SELECT
hrswk
FROM UserProfileRATinterface_view us
INNER JOIN users u
ON u.username = us.username
WHERE r.week_val = us.calwk
AND r.uid = u.uid
AND yr = 2016)
END) * 100 AS percentage_val
FROM rat_proj_duration_map r
私はこのクエリを実行すると、私は問題を時間を抜け出します。
TCPプロバイダー:タイムアウトエラー[258]
SQL Serverは、タイムアウト値を増やすために私の手ではありません。
SQLクエリを最適化できますか?
質問に実行計画を追加します:https://www.mssqltips.com/sqlservertip/1856/sql-server-query-execution-plans-in-と私にその場合の考え方は次のようになりますSQL Server管理スタジオ/ – Backs