我有三张桌子:
A_details
B_details
C_details
什么会更有效:三个选择查询,或一个带连接的查询?
答案 0 :(得分:1)
这将在很大程度上取决于架构,如果表上有正确的索引。
我通常更喜欢让数据库加入,而不是尝试在代码中进行,数据库在这方面做得更好。
这里的关键是如果你有有效读取连接的正确索引。
答案 1 :(得分:0)
这取决于您的数据库,但是当它们没有意义时不要创建JOIN。您尚未指定任何数据库或平台。如果您的平台允许每个查询多个结果集,则只需一次发出三个SELECT,并在一个数据库请求中获取三个表。
如果您的平台不支持它,请访问数据库三次,不要尝试联合查询,除非您确定这是性能问题。
答案 2 :(得分:0)
连接表更有效,因为规范化是一种更好的方法。
这里我使用左外连接表连接在表之间的公共列上的三个表。因此,请将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
有关详细信息,请参阅: http://www.w3schools.com/sql/sql_join.asp