2012-10-22 80 views
0

A.以下查詢有什麼區別。這是執行最有效的方法?

SELECT * 
FROM `photo` 
     INNER JOIN `photo_comment` 
      ON `photo`.id = `photo_comment`.photo_id 
LIMIT 0,2 

B.

SELECT * 
FROM (SELECT * FROM `photo_comment`) AS T,`photo` 
WHERE T.photo_id = `photo`.id 
LIMIT 0,2 

C.

SELECT * 
FROM `photo_comment`,`photo` 
WHERE `photo`.id=`photo_comment`.photo_id 
LIMIT 0,2 

什麼下列查詢之間的差別。這是執行最有效的方法?

在此先感謝您的幫助和啓發。

回答

1

第一個查詢和第三個查詢是相同的。第一個查詢使用ANSI SQL-92格式,而第三個查詢(舊的)使用SQL-89格式。

第二個查詢較慢(,但不是完全較慢的),因爲它先掃描photo_comment並將其與其他表連接。

+0

我不知道查詢分析器不會優化第二個查詢嗎? – raina77ow

+0

它可能,但這取決於您正在運行的MySQL版本。 – Kickstart

0

第一個和第三個查詢是相似的。其次是由於使用臨時表來存儲內部選擇的結果而最慢的一個。

相關問題