Zik*_*kes 8 sql-server sql-server-2008-r2
我正在创建一个视图,该视图使用带有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 查询?
Mar*_*ith 14
不要使用 SSMS 向导。
只需CREATE VIEW dbo.Foo AS SELECT ...
在新的查询窗口中键入您的语句并执行它。
这将阻止它将查询语法重新排列为语义等效但性能更差的替代方案。