在我给出更多细节之前,我不确定是否有一个一般性的答案。
我有一个名为vw_View的视图
为了获得结果,我尝试了以下两个查询:
select * From [test].[dbo].[vw_View]select * From [dbo].[vw_View]有人能告诉我为什么对同一个查询进行查询,但是从master数据库查询要比从其他数据库查询慢得多,我甚至通过以下方法尝试了其他查询:
Use [db] --any other databases not master database
select * From [test].[dbo].[vw_View]我检查了实际的执行计划,连接顺序不同,但是为什么会改变,因为我已经在master下指定了master
只是出于好奇,提前谢了。
发布于 2017-01-09 17:47:27
注意,这可能不是答案,但它是太多的文字评论无论如何.
我们经常听到的一件事是,当开发人员抱怨运行过程缓慢时,这个过程只在从应用程序调用时运行缓慢,而在从SSMS执行时运行良好。
通常情况下,这是由于不同的执行设置,取决于调用过程的位置。为了检查这些设置是否有差异,我通常使用SQL。
在您的示例中,您可以在SSMS中打开两个不同的窗口--一个在Master数据库的上下文中,另一个在User Database的上下文中并运行SQL,第一个事件分析器将捕获,将是Event Class = Existing Connections和Text Data = -- network protocol: LPC.....。
此记录将显示执行命令的每个会话的所有默认设置,这些设置看起来类似于.
-- network protocol: LPC
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language us_english
set dateformat mdy
set datefirst 7
set transaction isolation level read committed现在,比较两个会话的设置,看看有什么不同。
分析器还有一个列SIPD,它将帮助您识别哪个窗口是哪个窗口。我很肯定答案就在那附近。
https://stackoverflow.com/questions/41553310
复制相似问题