【发布时间】:2018-02-28 05:47:20
【问题描述】:
我们有一个未按照 sql 指南编写的 SQL 查询。我们必须更改查询,但如果我们更改逻辑并删除内部查询,则执行需要很长时间。以下是查询:
select col1,
col2,
case
when col1 <> '' then(select top 1
col1
from table1 as BP
where bp.col1 = FD.col1 order by BP.col1)
when col2 <> '' then(select top 1
BP.col2
from table1 as BP
where BP.col2 = FD.col2 order by BP.col2)
else ''
end
from table2 FD
上述查询用于将数据插入临时表。表 1 有近 1 亿条数据。有什么方法可以删除内联查询以及良好的性能。我们已经在 table1 上创建了索引。有什么想法吗?
【问题讨论】:
-
为什么需要删除内联sql?
-
Table1 有 1 亿条数据,但是 Table2 呢?
-
我不明白为什么你需要子查询,因为它从外部表
table2返回col1 and col2 -
您应该在此处向我们展示示例数据。子查询并不完全有意义,因为您任意保留了一条记录。
-
是的。表 1 有数以百万计的数据以及类型。我们正在从 table1 中获取类型。
标签: sql sql-server sqlperformance