View Full Version : Force Order
حمیدرضاصادقیان
جمعه 08 اردیبهشت 1385, 15:56 عصر
سلام خدمت دوستان
اقای ثباتی میشه درباره option(force order) در استفاده از join ها توضیح بدید.
اینجور که من متوجه شدم با این دستور عمل join سریعتر انجام میپذیرد.
AminSobati
جمعه 08 اردیبهشت 1385, 16:24 عصر
نه حمید جان، ابدا!
در حالت عادی، وقتی چندین جدول رو در یک Query با هم Join میکنید، Query Optimizer تصمیم میگیره که با چه ترتیبی Joinها رو انجام بده تا بهترین Performance بدست بیاد. Force Order باعث میشه تا Optimizer خلاقیت به کار نگیره و دقیقا به همون ترتیبی که نام جداول در Query قید شده Join رو انجام بده. اکیدا توصیه میکنم از هیچ کدوم از Forceها استفاده نکنید تا Optimizer دستش باز باشه. Optimizer در صورتی احتمال داره الگوریتم نامناسب انتخاب کنه که Statisticها به روز نباشند یا Parameter Sniffing نتونه انجام بده (بدلیل اشکال در نوشتن SP مثلا)، در این حالت ممکنه حجم اطلاعات خروجی رو اشتباه تخمین زده باشه و الگوریتم ضعیفی انتخاب کنه.
اگر همه کارهایی که به عهده Developer هست درست انجام شده باشه، هیچ نیازی به Force کردن نیست. ضمنا اگر شما روی یک سیستم Force انجام بدین و نتیجه بگیرید، الزاما همین نتیجه روی کامپیوتر دیگه بدست نمیاد چون وضعیت سخت افزار و تعداد کاربران در حال کار تاثیر گذار هستند.
جمع بندی اینکه: Force نکنید!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.