0

有两个具有共同字段 ID 的表。我想要做的是选择特定id的所有属性,我想知道哪种方式更有效。

  1. 使用 INNER JOIN,然后完成单个 SELECT * 操作。
  2. 先从小表中选择,如果id存在,再从大表中选择。
4

3 回答 3

2

在大多数数据库中,您想要进行连接:

select *
from bigtable b join
     smalltable s
     on b.id = s.id
where b.id = @id;

SQL 引擎有一个优化器来确定查询的最佳执行计划。正如评论中提到的,拥有一个索引通常会加快速度。

通过从一个表中选择,然后从另一个表中选择,您正在强制执行特定的执行计划。

通常,您应该相信 SQL 引擎能够生成最佳执行计划。在某些情况下,最好先做一个然后再做另一个,但通常情况并非如此。

于 2013-07-19T02:50:11.753 回答
0

这将根据每种情况而有所不同。你不能做出笼统的说法,说总是会更好。要进行比较,您可以查看执行计划,或者简单地运行两者并根据执行时间进行比较。

例如:如果很少在第二个表中找到数据,那么随着时间的推移,运行单个查询等可能会更好

于 2013-07-19T02:48:37.760 回答
0

我建议你采取第二种方式。

将一些主要/主要信息保留在 中是一个好习惯index table,然后将额外/详细信息放在另一个大表上。

把info分成两部分(main/primary | extra/detail),因为大多数时候我们只处理第一部分info,这样可以节省大查询、大数据传输、净带宽的成本。

于 2013-07-19T02:54:38.103 回答