过去我使用过两种方法来解决参数嗅探问题:
1) 使用WITH RECOMPILE
2) 将参数值重新分配给局部变量并使用这些值代替参数
据我了解,这两者的最终结果是相同的 - 创建并使用针对当前查询/参数优化的新执行计划。
如果这是真的,这两种方法之间有什么区别吗,或者它们本质上是一样的?一个比另一个更可取吗?
假设我有一个由以下 SQL 定义的视图:
SELECT t1.id, t2.name, t3.address
FROM Table1 as t1
INNER JOIN Table2 t2
ON t1.id = t2.tID
INNER JOIN Table3 t3
ON t1.id = t3.tID
Run Code Online (Sandbox Code Playgroud)
据我所知,如果我在这个视图上创建一个索引,那么数据将被持久化,但我不清楚究竟是什么被持久化了。假设我在 t1.id 上创建了一个唯一的聚集索引,是否将所有三列都保存到磁盘中,或者是否仍会在运行时计算从 table2 和 table3 中提取的值?
如果其中任何一个没有意义,或者我是否遗漏了任何重要内容,请告诉我。
我有一个正在由在未知位置运行的服务更新的表。
我已经检查了所有通常与我的数据库服务器通信的服务器,但它们似乎都没有运行相关服务。
我正在尝试追踪此服务的运行位置,我想知道是否可以查看影响特定表的查询来自何处?
这可能吗?