PDA

View Full Version : فرق این دوتا دستور در چی هست ؟؟



MShirzadi
دوشنبه 26 آذر 1386, 22:20 عصر
من می خوام بدونم فرق این دوتا دستور از نظر سرعت و یا هر چیز ذیگه ای که فکر می کنید در چی هست


Select * From TblA Inner join TblB on TblA.ID = TblB.IDو


Select * From TblA,TblB where TblA.ID = TblB.ID
البته میدونم که نام دوتا تیبل ذو که پشت سر هم میگذاریم همون Cross Join هست ولی دو مورد تفاوتش فکر کنم که اولی در رکورد های بالا از سرعت اجرایی بالاتری برخوردار باشه

حالا منتظر شما هستم دوستان....

AminSobati
دوشنبه 26 آذر 1386, 23:52 عصر
دوست عزیزم،
زمانیکه عبارت Join قید نمیشه، در حقیقت دارین از روش Join قدیمی که استاندارد هم نیست استفاده میکنید. Queryهایی که از Join استفاده میکنند، یعنی دارن ANSI Style Join رو به کار میبرند. تفاوت مهم این دو روش در Outer Joinها مشخص میشه. در روش قدیمی، شرط خود Join و Where یکی هستند. اما در ANSI Style شما میتونین شرطهای جداگانه در ON و Where داشته باشید. در بعضی Queryها نباید این دو شرط با هم AND بشن چون عملکردشون متفاوته.

MShirzadi
سه شنبه 27 آذر 1386, 14:46 عصر
دوست عزیز اگر بتونی در این مواردی که گفتی یه مثال هم بزنی ممنون می شم

MShirzadi
پنج شنبه 29 آذر 1386, 03:17 صبح
دوست عزیز دو مطلب رو عنوان کردی که به شرح زیر است

اما در ANSI Style شما میتونین شرطهای جداگانه در ON و Where داشته باشید.
و

در بعضی Queryها نباید این دو شرط با هم AND بشن چون عملکردشون متفاوته.
حالا اکر با مثال توضیح بدی ممنون می شم
و می خوام بدونم که این دو دستور از نظر سرعت اجرا با هم تفاوتی ندارن یا دارن

پرواز
پنج شنبه 29 آذر 1386, 07:28 صبح
با اجازه آقای ثباتی، از مثال خودشون استفاده می کنم:
در بانک Northwind، همه مشتریانی که با کارمند شماره 1 کار نکرده اند:
SELECT c.CompanyName, o.OrderID, o.EmployeeID FROM
Customers c LEFT JOIN Orders o
ON c.CustomerID = o.CustomerID AND o.EmployeeID = 1
WHERE o.OrderID IS NULL