我有三张桌子:
A_details
B_details
C_details
什么会更有效:三个选择查询,还是一个带有连接的查询?
这在很大程度上取决于架构,以及表上是否有正确的索引。
我通常更喜欢让数据库进行连接,而不是尝试在代码中进行连接,数据库在这方面做得更好。
这里的关键是您是否有正确的索引以使连接有效地读取。
看看数据库索引
这取决于您的数据库,但不要在没有意义时创建 JOIN。您尚未指定任何数据库或平台。如果您的平台允许每个查询有多个结果集,只需一次发出三个 SELECT,并在一个数据库请求中获取三个表。
如果您的平台不支持,请访问数据库 3 次,并且不要尝试合并查询,除非您确定这是性能问题。
连接表更有效,因为规范化是一种更好的方法。
在这里,我对在表之间的公共列上连接的三个表使用左外连接。因此,请将 column 替换为 col1, col2, col3... 适合您的表的内容,并参考以下查询:
select a.*, b.*, c.*
from A_details a
left outer join B_details b on a.col1=b.col2
left outer join C_details c on a.col1=b.col3