在 SQL Server 中将查询提示 (OPTION) 置于视图中

And*_*iff 5 sql-server query-hints query-performance sql-view

我有一个使用多个连接的视图的 SQL 查询,该查询偶尔运行非常慢 - 比正常情况慢很多,使查询几乎无法使用。

我从视图中复制了查询并进行了试验并在https://dba.stackexchange.com/a/60180/52607找到了解决方案- 如果我添加

OPTION (MERGE JOIN, HASH JOIN)
Run Code Online (Sandbox Code Playgroud)

到查询结束时,它的运行速度提高了约 6 倍。

我现在尝试将 OPTION 调整为原始视图,但 SQL Server/SSMS 告诉我

Incorrect syntax near the keyword 'OPTION'.
Run Code Online (Sandbox Code Playgroud)

如何将此选项添加到视图中,以便视图的结果查询同样快?

(将选项添加到视图上的查询并没有导致任何加速。这看起来像这样:

select * from vMyView
where SomeDate >= CONVERT(Datetime, '2017.09.20')
OPTION (MERGE JOIN, HASH JOIN)
Run Code Online (Sandbox Code Playgroud)

我想我必须直接将此选项用于 vMyView - 如果可能的话。)

小智 0

您可以在视图的联接中添加本地提示

select X, Y from tab1 inner merge JOIN tab1 on tab1.id = tab2.id 
Run Code Online (Sandbox Code Playgroud)