inner join با سلکت معمولی از چند جدول فرق داره ؟؟
برام یک ابهام پیش اومده و اونم اینه که هرکار با 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
نقل قول: inner join با سلکت معمولی از چند جدول فرق داره ؟؟
دوستانی که به sql مسلط هستند لطفا وارد بحث شوند
نقل قول: inner join با سلکت معمولی از چند جدول فرق داره ؟؟
سلام
دومین کوئری شکل قدیمی دستور cross join است. که تمامی سطرهای هر سه جدول را با هم ترکیب می کند. سپس شرط شما را روی تک تک آنها بررسی می کند. بدلیل شفاف نبود شروط و اختلاط آنها با دیگر شرط ها بهتر است از روش دیگر استفاده کنید.
اما اولین کوئری ابتدا جدول یک را با دو ترکیب می کند و شرط ON را روی آن اجرا می کند سپس جدول سوم را را با نتیجه قبلی ترکیب می کند. که ظاهرا باید سریع تر باشد. از دستور explain برای مقایسه دو دستور روی جداول بزرگ استفاده کنید.
سرعت اجرای کوئری در موتورهای مختلف و نسخه های مختلف متفاوت است. موتور دیتابیس روی کوئری پیش پردازش انجام می دهد تا آنها را با سرعت بیشتری اجرا کند. مثلا وقتی شرط زیر را دارید where content like "%hello%" and id = 25 موتور دیتابیس ابتدا شرط دوم را اجرا می کند سپس شرط اول را.
نقل قول: inner join با سلکت معمولی از چند جدول فرق داره ؟؟
درسته منم یه تحقیقی کردم فرقشون فقط سرعتشونه