有两个表具有公共字段ID。我想要做的是选择特定id的所有属性,我想知道哪种方式更有效。
答案 0 :(得分:2)
在大多数数据库中,您希望进行连接:
select *
from bigtable b join
smalltable s
on b.id = s.id
where b.id = @id;
SQL引擎有一个优化器来确定查询的最佳执行计划。正如评论中提到的那样,拥有一个索引可以加快速度。
通过从一个表中选择,然后从另一个表中选择,您将强制执行特定的执行计划。
通常,您应该信任SQL引擎以生成最佳执行计划。在某些情况下,做一个然后另一个可能更好,但通常情况并非如此。
答案 1 :(得分:0)
这将根据每种情况而有所不同。你不能做出一个通用的陈述,说一个人总会更好。 要进行比较,您可以查看执行计划,或者只是运行两者并根据执行时间进行比较。
例如:如果在第二个表中很难找到数据,那么随着时间的推移,运行单个查询等可能会更好
答案 2 :(得分:0)
我建议你采取第二种方式。
最好将一些主要/主要信息保存在index table
中,然后将额外/详细信息放在另一张大桌子上。
将信息分为两部分(main / primary | extra / detail),因为大多数时候,我们只有第一部分信息,它可以节省大量查询,大数据传输,净带宽的成本。