2013-02-16 61 views
0

我很想知道查詢懲罰是什麼,以致無法加入到LEFT JOINMySQL:對於沒有加入者的LEFT JOIN的懲罰...

我有兩個表:main.ID.type.infoadditional.ID.more_info

我運行此查詢:

SELECT main.*, additional.* FROM main LEFT JOIN additional ON main.ID = additional.ID

我清楚地知道,70%時間,我要去查詢main.type沒有其他信息 - 沒有條目在additional但由於限制,我總是必須包括LEFT JOIN語句。

這會導致多少查詢處罰(時間) - 如果有的話?

E.G.方法是:

SELECT * FROM main WHERE type = 'no additional'

會比顯著快:

SELECT main.*, additional.* FROM main LEFT JOIN additional ON main.ID = additional.ID WHERE main.type = 'no additional'

回答

0

爲什麼你不基準它?沒有得到比賽沒有懲罰。 MySQL必須掃描連接字段的索引,以檢查是否存在匹配。

如果有什麼,獲取連接結果實際上是懲罰,因爲現在MySQL必須挖掘表格文件以找回結果。

+0

一個基準測試如何? – Alltheprettyhorses 2013-02-17 00:05:26