benyaminrahimi
سه شنبه 10 دی 1392, 10:18 صبح
میخاستم بدونم در کوعری هایی که مثلا دو بار تابع sum در یک عبارت مشخص صدا زده میشن . یک بار این عملیان اجرا میشه یا به تعداد فراخوانی ؟
اگر به تعداد فرا خونی اجرا میشن به نطرتون چطوری میشه این هزینه زمانی رو کاهش داد .
خودم به فکرم رسید که مثلا این جمع رو در یک ویو در نظر بگیرم و بعد در پر وسیجر کالش کنم ...
شما چطور فکر میکنید
SELECT LEFT(vw_acc_alls.hesab_cod, @tool) AS hcod,
ISNULL(SUM(vw_acc_alls.bed), 0) AS sm_bed,
ISNULL(SUM(vw_acc_alls.bes), 0) AS sm_bes,
CASE
WHEN (
ISNULL(SUM(vw_acc_alls.bed), 0) -
ISNULL(SUM(vw_acc_alls.bes), 0)
)
>= 0 THEN (
ISNULL(SUM(vw_acc_alls.bed), 0) -
ISNULL(SUM(vw_acc_alls.bes), 0)
)
ELSE 0
END AS mbed,
CASE
WHEN (
ISNULL(SUM(vw_acc_alls.bed), 0) -
ISNULL(SUM(vw_acc_alls.bes), 0)
)
<= 0 THEN ABS(
ISNULL(SUM(vw_acc_alls.bed), 0) -
ISNULL(SUM(vw_acc_alls.bes), 0)
)
ELSE 0
END AS mbes
FROM vw_acc_alls
WHERE (vw_acc_alls .dore_id = @dore_id)
AND (tarikh >= @az)
AND (tarikh <= @ta)
AND (m1c LIKE @mcod OR m2c LIKE @mcod OR m3c LIKE @mcod)
GROUP BY
LEFT(vw_acc_alls.hesab_cod, @tool)
HAVING LEN(LEFT(vw_acc_alls.hesab_cod, @tool)) = @tool
اگر به تعداد فرا خونی اجرا میشن به نطرتون چطوری میشه این هزینه زمانی رو کاهش داد .
خودم به فکرم رسید که مثلا این جمع رو در یک ویو در نظر بگیرم و بعد در پر وسیجر کالش کنم ...
شما چطور فکر میکنید
SELECT LEFT(vw_acc_alls.hesab_cod, @tool) AS hcod,
ISNULL(SUM(vw_acc_alls.bed), 0) AS sm_bed,
ISNULL(SUM(vw_acc_alls.bes), 0) AS sm_bes,
CASE
WHEN (
ISNULL(SUM(vw_acc_alls.bed), 0) -
ISNULL(SUM(vw_acc_alls.bes), 0)
)
>= 0 THEN (
ISNULL(SUM(vw_acc_alls.bed), 0) -
ISNULL(SUM(vw_acc_alls.bes), 0)
)
ELSE 0
END AS mbed,
CASE
WHEN (
ISNULL(SUM(vw_acc_alls.bed), 0) -
ISNULL(SUM(vw_acc_alls.bes), 0)
)
<= 0 THEN ABS(
ISNULL(SUM(vw_acc_alls.bed), 0) -
ISNULL(SUM(vw_acc_alls.bes), 0)
)
ELSE 0
END AS mbes
FROM vw_acc_alls
WHERE (vw_acc_alls .dore_id = @dore_id)
AND (tarikh >= @az)
AND (tarikh <= @ta)
AND (m1c LIKE @mcod OR m2c LIKE @mcod OR m3c LIKE @mcod)
GROUP BY
LEFT(vw_acc_alls.hesab_cod, @tool)
HAVING LEN(LEFT(vw_acc_alls.hesab_cod, @tool)) = @tool