PDA

View Full Version : بررسی performance این Query



حمیدرضاصادقیان
پنج شنبه 26 مهر 1386, 20:55 عصر
سلام خدمت اساتید.من دو تا جدول دارم.یکی حسابهای معین در آن ذخیره میشه یکی حسابهای تفصیلی.بعضی مواقع ما دربرنامه حساب معادل تعریف میکنیم به این صورت که چند حساب تفصیلی قبلا تعریف شده و ما نیاز داریم در چند حساب معین دیگه از اون حسابها استفاده کنیم.به همین خاطر این امکان رو گذاشتیم که کاربر با انتخاب حساب کل و معین مربوطه لیست تفصیلی های اون حساب رو در این حساب معین نیز مشاهده کنه.
حالا در پرینت حساب تفصیلی ما نیاز داریم حسابهای معین که دارای حساب تفصیلی هستند نمایش داده بشند.ولی این حسابهای معین که دارای حساب معادل هستند فقط در جدول معین هستند و دو ستون دیگر هست که حسابهای کل و معین معادل اونو مشاهده میکنه.
من کد زیر رو برای اینکار نوشتم و به راحتی مشکلم حل شد.میخواستم ببینم ایا میشه بهتر از این نوشتش.یا راه قشنگتری هم هست که از outerjoin استفاده نکنم.؟


Select tf.Kol_n,tf.moen_n,tf.Tafzil_n,tf.tafzil_c,mn.kl1, mn.mn1,mn.kol_n,mn.moen_n
,tafzil_c=case
when tf.kol_n is null then ' این حساب معادل کل ' +cast(mn.kl1 as varchar(5))+' و معین '+cast(mn.mn1 as varchar(3))+'است'
end
from f_moein mn
left outer join f_tafzil tf
on tf.kol_n=mn.kol_n and tf.moen_n=mn.moen_n
where mn.kl1>0 or tf.kol_n is not null

AminSobati
جمعه 27 مهر 1386, 20:23 عصر
حمیدرضا جان ظاهر این Query چیزی دلیل بر نا بهینه بودن نداره. چیزی که باقی هست Plan مربوطه باید بهینه باشه

حمیدرضاصادقیان
جمعه 27 مهر 1386, 23:29 عصر
سلام.اخه در سایت sql performance نوشته حدالمقدور از outer join استفاده نکنید و به inner join تبدیل کنید.
حالا میخواستم ببینم این مشکلی نداره؟
این هم plan این query البته zip هست.
با تشکر.

AminSobati
شنبه 28 مهر 1386, 15:35 عصر
Plan این Query خوب و معقول هستش، مشکلی دیده نمیشه