小编N4v*_*N4v的帖子

在存储过程中使用临时表的最佳实践

我最近开发了一个存储过程,它基本上从几个不同的表中查询数据,对其进行操作,然后将结果插入到某个表中。

它最终成为一个包含许多子查询的 INSERT 语句,大约有 300 行。代码非常高效;但是,它的可读性不是很好,并且可能还有其他缺点。

编写这样的查询是否在推荐用法内:

SELECT ...
INTO #tempfoo
FROM foo;

SELECT ...
INTO #tempbar
FROM bar;

SELECT ...
FROM #tempfoo
     INNER JOIN #tempbar ON #tempfoo.id = #tempbar.id;
Run Code Online (Sandbox Code Playgroud)

或者像这样写更好,即使它可能变得有些不可读:

SELECT ...
FROM
(
    SELECT ...
    FROM foo
) AS foo
INNER JOIN
(
    SELECT ...
    FROM bar
) AS bar ON foo.id = bar.id;
Run Code Online (Sandbox Code Playgroud)

注意:我知道这是一个简单的例子,但想象一下,如果您有嵌套子查询层和四个或更多表连接。

sql-server best-practices

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

best-practices ×1

sql-server ×1