PDA

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



حمیدرضاصادقیان
شنبه 12 آبان 1386, 09:29 صبح
سلام.من یک query نوشتم برای تهیه لیست کالا.ولی هنگامی که 1000000 رکورد دارم تقریبا 30 ثانیه طول میکشه.اولا میخواستم ببینم روش دیگری هست که مجبور نباشم یک دفعه تمام این لیست را نمایش بدم.دوما ایا میشه کاری کرد این query سریعتر لود بشه؟
با تشکر


SELECT P_Anbar.rdfAnbar,P_Anbar.Cod_k,P_Anbar.Cod_v,
P_kala.Disk1 AS name,p_vahed.disk1 AS vahed,
p_ganbar.Name AS nameAnb, P_kala.Fani ,P_Gkala.grp_c,P_Gkala.grp,p_kala.mark,0 as selected,P_kala.Len_cod
FROM P_Anbar
INNER JOIN
P_kala ON P_Anbar.Cod_k = P_kala.Cod
INNER JOIN
p_vahed ON P_Anbar.Cod_v = p_vahed.Cod
INNER JOIN
p_ganbar ON P_Anbar.rdfAnbar = p_ganbar.rdf
INNER JOIN
P_Gkala ON P_kala.grp = P_Gkala.grp
GROUP BY P_Anbar.rdfAnbar, P_Anbar.Cod_k, P_Anbar.Cod_v, P_kala.Disk1, p_vahed.disk1,
p_ganbar.Name, P_kala.Fani, P_Gkala.grp_c, P_Gkala.grp, P_kala.Mark, P_kala.Len_cod


در ضمن من میخواستم این plan رو درداخل sql 2005 ذخیره کنم ولی گزینه Save plan خاموش بود.

AminSobati
یک شنبه 13 آبان 1386, 00:37 صبح
کمبود ایندکس روی P_kala و P_Anbar به چشم میخوره. روی هر کدوم یک ایندکس nonclustered بسازین. این ایندکس باید با فیلدی که در شرط Join شرکت کرده شروع بشه و تمام فیلدهایی که در Select نام بردین رو در بر بگیره.
Save Plan زمانی فعاله که Engine هم 2005 باشه

حمیدرضاصادقیان
یک شنبه 13 آبان 1386, 07:22 صبح
ممنون.در مورد سوال اول که حتما تست میکنم .ولی در مورد سوال دوم engine من 2005 هست.یعنی من روی 2005 دارم تست میکنم.از طریق 2005 به 2000 وصل نشدم.

AminSobati
یک شنبه 13 آبان 1386, 13:09 عصر
پس با Query Analyzer به 2005 وصل شدین. باز هم امکان Save کردن Plan وجود نداره!