2013-06-18 69 views
-2

我正在使用內部連接創建查詢的邏輯。mysql內部加入速度效率

從理論上講,它會加速這個過程,你是從一張小桌子開始的嗎?

說我比較兩個表中的密鑰。表A只有4行。表B有100

所以會:

SELECT * FROM `a` INNER JOIN `b` ON `a`.`key` = `b`.`key` WHERE `b`.`key`='value' 

跑得比:

SELECT * FROM `b` INNER JOIN `a` ON `b`.`key` = `a`.`key` WHERE `b`.`key`='value' 

編輯:我已經試過這與更大的數據集(10000項)和總是看到不同的結果。我試圖研究並找不到明確的答案。如果這個問題太含糊,請道歉。

+0

親自測試,讓我們知道。 – Kermit

+0

您是否嘗試過自己運行?只需生成一些大數據集並運行查詢! –

回答

1

不,組合是一樣的。

4X100 = 100X4(一場比賽並不意味着其獨特的 - 所以所有的人在來看待)

即使被索引的索引a.key和b.key列會時需要使用的行會仍然以與上述相似的方式減少和增加。

更小的集會(我認爲)有更多的差異,因爲CPU可能發生緩存,但查詢優化器應該發現並重寫最佳執行計劃。

0

INNER JOIN是兩個表+條件的笛卡爾乘積。

此查詢的另一種語法是:在FROM條款表

SELECT * FROM `a`, `b` WHERE `a`.`key` = `b`.`key` AND `b`.`key`='value' 

順序並不重要。所以我相信,這兩個查詢確實是相同的,但您應該在比100行更大的數據樣本上進行檢查來驗證。