MySQL:哪一个在1:N关系中更快?加入还是两个查询?

时间:2013-12-12 16:12:58

标签: mysql sql

考虑main_table_id链接的两个表:

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` = ?

对我来说,唯一的区别是我要在第一种情况下一次性获取数据,在第二种情况下在两个不同的数组中获取数据。

但我的疑问是:在服务器性能方面,哪一个是处理案例的最佳方式?

2 个答案:

答案 0 :(得分:1)

我唯一能想到的就是你要两次往返db而不是一次。有一些奇怪的情况存在显着差异,但我怀疑这是这种情况。

答案 1 :(得分:1)

最小化服务器往返并一次性获取所有数据,除非它真的太大并且加速了网站加载时间。