我有一个表格,其中包含一列十进制值,例如:
id value size
-- ----- ----
1 100 .02
2 99 .38
3 98 .13
4 97 .35
5 96 .15
6 95 .57
7 94 .25
8 93 .15
Run Code Online (Sandbox Code Playgroud)
我需要完成的事情有点难以描述,所以请耐心等待。我想要做的是创建size
列的聚合值,当根据value
. 结果看起来像这样:
id value size bucket
-- ----- ---- ------
1 100 .02 1
2 99 .38 1
3 98 .13 1
4 97 .35 1
5 96 .15 2
6 95 .57 2
7 94 .25 2
8 93 .15 3
Run Code Online (Sandbox Code Playgroud)
我天真的第一次尝试是保持运行SUM
,然后 …
我正在创建一个视图,该视图使用带有WHERE
类似于此子句的语句:
WHERE
(
col1 IS NOT NULL
OR
col2 IS NOT NULL
)
AND
NOT EXISTS (SELECT ...)
Run Code Online (Sandbox Code Playgroud)
运行平均需要 10 秒。但是,当我尝试将此查询保存为视图时,SQL Server(或 MS SQL Server Management Studio 客户端)会“优化”查询以使用此结构,而不是:
WHERE
(col1 IS NOT NULL AND NOT EXISTS (SELECT ...))
OR
(col2 IS NOT NULL AND NOT EXISTS (SELECT ...))
Run Code Online (Sandbox Code Playgroud)
将查询减慢到 6 分钟以上。有什么方法可以禁用此行为,以便视图完全使用我提供的 SQL 查询?