PDA

View Full Version : تفاوت این کوئری ها چیه؟



imohammad
چهارشنبه 06 خرداد 1394, 09:38 صبح
سلام
دوتا کوئری زیر یه نتیجه رو بر میگردونه
چه تفاوتی دارن؟
SELECT person.name, items.title, orders.qty, (items.price * orders.qty) AS price
FROM person, items, orders
WHERE orders.person_id = person.id AND orders.item_id = items.id

SELECT person.name, items.title, orders.qty, (items.price * orders.qty) AS price
FROM person INNER JOIN (items INNER JOIN orders ON items.ID=orders.item_id) ON person.ID=orders.person_id;

fatima-php
چهارشنبه 06 خرداد 1394, 09:53 صبح
سرعت اجرای دومی بیشتره و مصرف حافظه کمتری هم داره. Natural Join (اولی) همیشه میاد تمام رکوردها رو در هم ضرب میکنه (یعنی اگه توی یه جدول 2 رکورد و توی یکی دیگه 3 رکورد دارین، میاد 6 رکورد میسازه که به ازای تمام رکوردهای جدول اول، یکی از رکوردهای جدول دوم قرار میگیره) و بعد، با WHERE میاین از اینها مواردی که نمیخواین رو حذف میکنید ولی دومی همون اول فقط رکوردهایی قرار میگیرن که مشترک هستن و با هم ارتباط دارن.