PDA

View Full Version : inner join با سلکت معمولی از چند جدول فرق داره ؟؟



master_pro
دوشنبه 03 تیر 1398, 16:25 عصر
برام یک ابهام پیش اومده و اونم اینه که هرکار با inner join میشه کرد با سلکت معمولی از چند جدول هم میتونم انجام بدم پس اینها فرقی باهم ندارن؟
مثال :


SELECT *
FROM friends
INNER JOIN user as user1 ON user1.id=friends.id
INNER JOIN user as user2 ON user2.id=friends.id2



به این شکل با سلکت معمولی هم میشه نوشت


SELECT * FROM friends,user as user1,user as user2
WHERE user1.id=friends.id and user2.id=friends.id2

master_pro
دوشنبه 03 تیر 1398, 20:39 عصر
دوستانی که به sql مسلط هستند لطفا وارد بحث شوند

ali_sed
سه شنبه 04 تیر 1398, 13:30 عصر
سلام

دومین کوئری شکل قدیمی دستور cross join است. که تمامی سطرهای هر سه جدول را با هم ترکیب می کند. سپس شرط شما را روی تک تک آنها بررسی می کند. بدلیل شفاف نبود شروط و اختلاط آنها با دیگر شرط ها بهتر است از روش دیگر استفاده کنید.

اما اولین کوئری ابتدا جدول یک را با دو ترکیب می کند و شرط ON را روی آن اجرا می کند سپس جدول سوم را را با نتیجه قبلی ترکیب می کند. که ظاهرا باید سریع تر باشد. از دستور explain برای مقایسه دو دستور روی جداول بزرگ استفاده کنید.

سرعت اجرای کوئری در موتورهای مختلف و نسخه های مختلف متفاوت است. موتور دیتابیس روی کوئری پیش پردازش انجام می دهد تا آنها را با سرعت بیشتری اجرا کند. مثلا وقتی شرط زیر را دارید where content like "%hello%" and id = 25 موتور دیتابیس ابتدا شرط دوم را اجرا می کند سپس شرط اول را.

master_pro
چهارشنبه 05 تیر 1398, 19:53 عصر
درسته منم یه تحقیقی کردم فرقشون فقط سرعتشونه