PDA

View Full Version : Inner Join در Bookmark Lookup



tooraj_azizi_1035
یک شنبه 18 آبان 1393, 13:28 عصر
سلام
می خواستم بدونم چرا آیکن Nested Loops در پلن اجرا وجود داره؟

http://www.pinaldave.com/bimg/keylook3.jpg

حمیدرضاصادقیان
دوشنبه 19 آبان 1393, 07:05 صبح
سلام..
این به این دلیل است که شما یک ایندکس دارید بر روی فیلد CIty ولی در Select از ID,FirstName استفاده کردید که داخل Index شما نیست و برای اینکه بتونه اونو پیداکنه مجبور شده یک عملیات Key lookup رخ بده که ابتدا تمام رکوردهای شما یکبار توسط index که بهش Inner میگویند انجام میشه و توسط Outer یا همون key lookup میاد و با استفاده از PK به ازای هررکورد روی ورودی های شما که همون Index Seek اولیه هست جستجو انجام میده و مجبوره اینجا یک Nested Loops رخ بده .
شما برای اصلاح این قضیه Ix_OneIndex_City رو اصلاح کنید ودر Inlcude فیلدهای Id,city رو قرار بدید. با این موضوع مشکل حل خواهد شد و پلن شامل یک Select و یک Index seek خواهد شد.

hassanzarabi
یک شنبه 14 خرداد 1396, 05:46 صبح
با سلام و خسته نباشید خدمت شما
1-واقعا عالی توضیح دادید اما یک سئوال دارم آیا هزینه Nested Loops زیاد هست یا نه؟
2-اگر Nested Loops اتفاق بیفتد حتما باید index یا کوئری خودمونو باید اصلاح کنیم یا نه در بعضی از موقع ها مشکلی به وجود نمی آورد؟
ممنون می شوم پاسخ دهید
با تشکر