1
MS SQL Serverで、開始日と終了日の2つの日付と日付に関連する情報を求めるクエリがあります。いくつかの日付がMS SQL Serverの他のものよりもパフォーマンスが悪い理由
問題は、私はいつも同じパフォーマンスを得るわけではありません。私が日付の間に何かを要求するときはいつでも。
2010-07-01 00:00:00.000 and
2011-07-21 23:59:59.999
パフォーマンスが優れています。私は1秒以内に結果を得る。たとえば、
2011-07-01 00:00:00.000 and
2011-07-21 23:59:59.999
のようなこれらの日付の間に何かをリクエストすると、クエリごとに20〜28秒かかることがあります。良好なパフォーマンスを与える日付が、の間にどのようにであるのか、後者は20日であることに注意してください。
これは何らかの理由で(おそらくDATETIMEの動作に関連する)ありますか?
EDIT:クエリ、
SELECT ENAME,
SUM(CASE DATE WHEN 0 THEN 1 ELSE 0 END) AS U2,
SUM(CASE DATE WHEN 1 THEN 1 ELSE 0 END) AS B_2_4,
SUM(CASE DATE WHEN 2 THEN 1 ELSE 0 END) AS B_4_8,
SUM(CASE DATE WHEN 3 THEN 1 ELSE 0 END) AS B_8_16,
SUM(CASE DATE WHEN 4 THEN 1 ELSE 0 END) AS B_16_24,
SUM(CASE DATE WHEN 5 THEN 1 ELSE 0 END) AS B_24_48,
SUM(CASE DATE WHEN 6 THEN 1 ELSE 0 END) AS O_48,
SUM(CASE DATE WHEN 7 THEN 1 ELSE 0 END) AS status,
AVG(AVG) AS AVG,
SUM(DATE) AS TOTAL
FROM
(SELECT ENAME,
(CASE
WHEN status = 'Öppet' THEN 7
WHEN DATE < 48 THEN
(CASE WHEN DATE BETWEEN 0 AND 2 THEN 0
WHEN DATE BETWEEN 2 AND 4 THEN 1
WHEN DATE BETWEEN 4 AND 8 THEN 2
WHEN DATE BETWEEN 8 AND 16 THEN 3
WHEN DATE BETWEEN 16 AND 24 THEN 4
WHEN DATE BETWEEN 24 AND 48 THEN 5
ELSE - 1 END)
ELSE 6 END) AS DATE,
DATE AS AVG
FROM
(SELECT DATEDIFF(HOUR, cases.date, status.date) AS DATE,
extern.name AS ENAME,
status.status
FROM
cases INNER JOIN
status ON cases.id = status.caseid
AND status.date =
(SELECT MAX(date) AS Expr1
FROM status AS status_1
WHERE (caseid = cases.id)
GROUP BY caseid) INNER JOIN
extern ON cases.owner = extern.id
WHERE (cases.org = 'Expert')
AND (cases.date BETWEEN '2009-01-15 09:48:25.633'
AND '2011-07-21 09:48:25.633'))
AS derivedtbl_1)
AS derivedtbl_2
GROUP BY ENAME
ORDER BY ENAME
テーブル(の一部):
Extern
-ID (->cases.owner)
-name
Cases
-Owner (->Extern.id)
-id (->status.caseid)
-date (case created at this date)
Status
-caseid (->cases.id)
-Status
-Date (can be multiple, MAX(status.date) gives us date when
status was last changed)
あなたはあなたの質問を表示できますか?それは助けるかもしれない – biluriuday
私はそれを避けることができると思ったが、確かに。 –
同じ矛盾した振る舞いを示す最も簡単な場合に、それを煮詰めようとする可能性のある方法はありますか? – hoodaticus