
Untitled
By: a guest on
Jun 11th, 2012 | syntax:
None | size: 2.00 KB | hits: 10 | expires: Never
SQL Server Query Tuning: why CPU Time is higher than Elapsed Time ? Are they relevant to set operation?
SELECT userid
FROM mem..ProfileResult
WHERE (
(
QuestionID = 4 AND
QuestionLabelID = 0 AND
AnswerGroupID = 4 AND
ResultValue = 1
) OR
(
QuestionID = 14 AND
QuestionLabelID = 0 AND
AnswerGroupID = 19 AND
ResultValue = 3
) OR
(
QuestionID = 23 AND
QuestionLabelID = 0 AND
AnswerGroupID = 28 AND
(ResultValue & 16384 > 0)
) OR
(
QuestionID = 17 AND
QuestionLabelID = 0 AND
AnswerGroupID = 22 AND
(ResultValue = 6 OR ResultValue = 19 OR ResultValue = 21)
) OR
(
QuestionID = 50 AND
QuestionLabelID = 0 AND
AnswerGroupID = 51 AND
(ResultValue = 10 OR ResultValue = 41)
)
)
GROUP BY userid
HAVING COUNT(*) = 5
CPU time = 47206 ms, elapsed time = 20655 ms.
SELECT userid FROM(
SELECT userid
FROM mem..ProfileResult
WHERE QuestionID = 4 AND
QuestionLabelID = 0 AND
AnswerGroupID = 4 AND
ResultValue = 1
INTERSECT
SELECT userid
FROM mem..ProfileResult
WHERE QuestionID = 14 AND
QuestionLabelID = 0 AND
AnswerGroupID = 19 AND
ResultValue = 3
INTERSECT
SELECT userid
FROM mem..ProfileResult
WHERE QuestionID = 23 AND
QuestionLabelID = 0 AND
AnswerGroupID = 28 AND
(ResultValue & 16384 > 0)
INTERSECT
SELECT userid
FROM mem..ProfileResult
WHERE QuestionID = 17 AND
QuestionLabelID = 0 AND
AnswerGroupID = 22 AND
(ResultValue = 6 OR ResultValue = 19 OR ResultValue = 21)
INTERSECT
SELECT userid
FROM mem..ProfileResult
WHERE QuestionID = 50 AND
QuestionLabelID = 0 AND
AnswerGroupID = 51 AND
(ResultValue = 10 OR ResultValue = 41)
)vv
CPU time = 8480 ms, elapsed time = 18509 ms