2013-12-12 52 views
1

考慮由main_table_id鏈接兩個表:MySQL:哪一個在1:N關係中更快?加入或兩個查詢?

http://www.zigdigital.com.br/download/descartar/Diagrama1121220131414.jpg

我可以獲取像數據:

SELECT `main_table`.* , `second_table`.* 
FROM `main_table` 
JOIN `second_table` 
ON (`main_table`.`main_table_id` = `second_table`.`main_table_id`) 
WHERE `main_table`.`main_table_id` = ? 
AND `second_table`.`main_table_id` ? 

或者,我可以做到用兩個查詢同樣的事情:

SELECT * 
FROM `main_table` 
WHERE `main_table_id` = ? 

第二個查詢:

SELECT * 
FROM `second_table` 
WHERE `main_table_id` = ? 

對我來說,唯一的區別是我要在第一種情況下一次獲取數據,在第二種情況下要在兩個不同的數組中獲取數據。

但是我的疑問是:在服務器性能中,哪一個是處理這種情況的最佳方式?

+5

簡短的答案,這取決於。 http://stackoverflow.com/questions/1067016/join-queries-vs-multiple-queries – Quantastical

+2

它*確實*取決於,但是 - 一個粗略的近似值 - 一次到數據庫的行程將會比2短。 – Strawberry

回答

1

我能想到的唯一的事情就是你將兩次往返分數而不是一次。有一些奇怪的情況存在顯着差異,但我懷疑這是這種情況。

1

儘量減少服務器的往返次數,並且一次性獲取所有數據,除非它真的太大而且病態地減慢了站點加載時間。