View Full Version : مقایسه Performance بین Inner join , Subquery
resident
سه شنبه 12 فروردین 1393, 20:04 عصر
سلام.
2 کوئری زیر رو درنظر بگیرید.
Query 1: SELECT * From TabA INNER JOIN TabB on TabA.Id=TabB.Id
Query 2: SELECT * From TabA WHERE Id in (SELECT Id FROM TabB)
با فرض اینکه هر دو جدول TabB , TabA بالای 10000 رکورد داشته باشن، کدوم کوئری به لحاظ performance بهتره؟
حمیدرضاصادقیان
پنج شنبه 14 فروردین 1393, 10:27 صبح
سلام.
دستور In بهتره.چون در Inner Join یک ضرب دکارتی بین دو جدول انجام میشه و نتیجه اون فیلتر میشه.
ولی در حالت دوم فقط رکوردهای جدول دوم لیست شده و شرط روی آنها اعمال می شود که باعث کاهش سربار هزینه میشه.
البته نمیشه یک قانون گذاشت ولی درحالت کلی به این شکل هست.
بهتره برای هرQuery نیز دقیقا Plan اون بررسی بشه.
دانستن Logical Processing در این زمینه خیلی میتونه بهتون کمک کنه.
tooraj_azizi_1035
دوشنبه 18 فروردین 1393, 20:31 عصر
سلام
البته SQL Server معمولاً Subquery ها رو با Join جایگزین میکنه. فرقش در این هست که وقتی شما علناً از Join استفاده می کنید دست Optimizer برای انتخاب بهترین ترتیب Join بیشتر باز است. در هر حال همونطور که گفتن بهترینش همون مقایسه دو پلن هست. اما مطالبی که گفته شد رو در نظر داشته باشید.
من پلن هر دو رو البته برای 10 رکورد تست کردم یکی بود.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.