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

Posted

技术标签:

【中文标题】MySQL:在 1:N 关系中哪个更快?加入还是两个查询? [复制]【英文标题】:MySQL: Which one is faster in 1:N relationships? Join or two queries? [duplicate] 【发布时间】:2013-12-31 03:48:12 【问题描述】:

考虑由 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` = ?

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

但我的疑问是:在服务器性能方面,哪一种是最好的处理方式?

【问题讨论】:

简短回答,这取决于。 ***.com/questions/1067016/… 确实取决于,但是 - 粗略估计 - 一次访问数据库将比 2 短。 【参考方案1】:

我能想到的唯一一件事是您将两次往返于数据库,而不仅仅是一次。有一些奇怪的情况存在显着差异,但我怀疑这里是这种情况。

【讨论】:

【参考方案2】:

尽量减少服务器往返行程并一次性获取所有数据,除非它真的太大并且会减慢网站加载时间。

【讨论】:

以上是关于MySQL:在 1:N 关系中哪个更快?加入还是两个查询? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 MYSQL 中哪个更快?

论查询速度,MS和Mysql哪个快?

get() 还是 merge() 哪个更快?

哪个是更快的单个大查询或几个小查询?

哪个更快? ++、+= 还是 x + 1?

哪个更快?组合查询还是多个查询?