我最近开发了一个存储过程,它基本上从几个不同的表中查询数据,对其进行操作,然后将结果插入到某个表中。
它最终成为一个包含许多子查询的 INSERT 语句,大约 300 行。代码非常高效;但是,它的可读性不是很好,可能还有其他缺点。
编写这样的查询是否在推荐使用范围内:
SELECT ...
INTO #tempfoo
FROM foo;
SELECT ...
INTO #tempbar
FROM bar;
SELECT ...
FROM #tempfoo
INNER JOIN #tempbar ON #tempfoo.id = #tempbar.id;
还是这样写更好,即使它可能变得有些不可读:
SELECT ...
FROM
(
SELECT ...
FROM foo
) AS foo
INNER JOIN
(
SELECT ...
FROM bar
) AS bar ON foo.id = bar.id;
注意:我知道这是一个简单的示例,但想象一下,如果您有嵌套子查询层和四个或更多表连接。