小编Kei*_*ith的帖子

从 SELECT INTO #TempTable 锁定数据库

我们的实时数据库存在问题,其中从测试实例执行的查询引用了实时实例导致块,因为它显示为“暂停”,这导致用户请求备份,所有这些都是由于这个查询。

查看查询,一开始有一个请求引用了实时数据库:

SELECT      [Columns]
INTO        #TempTable
FROM        [LIVESERVER\LIVEINSTANCE].[LIVEDB].[dbo].Users                      AS  sv
RIGHT JOIN  [LIVESERVER\LIVEINSTANCE].[LIVEDB].[dbo].Company                    AS  co
INNER JOIN  [LIVESERVER\LIVEINSTANCE].[LIVEDB].[dbo].Company_Marketing          AS  cm  ON co.co_ref        = cm.cmk_co_ref
INNER JOIN  [LIVESERVER\LIVEINSTANCE].[LIVEDB].[dbo].Property                   AS  pr  ON co.co_pr_ref     = pr.pr_ref 
LEFT JOIN   [LIVESERVER\LIVEINSTANCE].[LIVEDB].[dbo].Company_Types              AS  ct  ON co.co_cot_id     = ct.cot_id
LEFT JOIN   [LIVESERVER\LIVEINSTANCE].[LIVEDB].[dbo].Users                      AS  cb  ON cm.cmk_called_by = cb.us_id 
LEFT JOIN   [LIVESERVER\LIVEINSTANCE].[LIVEDB].[dbo].Marketing_Disciplines      AS  md  ON cm.cmk_mdi_id    = md.mdi_id 
LEFT JOIN   [LIVESERVER\LIVEINSTANCE].[LIVEDB].[dbo].REGIONS                    AS  rg  ON sv.us_reg_id     = rg.reg_id
LEFT JOIN   [LIVESERVER\LIVEINSTANCE].[LIVEDB].[dbo].REGIONS                    AS  rg1 ON CB.us_reg_id     = rg1.reg_id
WHERE       cm.cmk_appointment …
Run Code Online (Sandbox Code Playgroud)

sql-server

3
推荐指数
1
解决办法
1430
查看次数

查询行为 - 关于统计

问题的快速背景:我们有一个应用程序,我们有许多为客户端运行的应用程序实例。虽然它们的版本可能略有不同,但它们基本上是相同的。

昨天,一位客户遇到了 SQL 超时问题。查看查询,我们发现某些表存在问题,并使用OUTER APPLY并重新编写它来规避该问题。

今天检查查询计划,我可以清楚地看到统计数据很糟糕,因为它预计大约有 250 万行,这是不正确的。我更新了统计数据,它已经解决了这个问题,现在预计有 30 行。

我的困惑来自于我检查其他客户数据库的查询计划时,统计信息似乎关闭,但是,查询在大约 1 秒内返回,而不是在所面临的问题中看到的 45 秒。

两个数据库都打开了自动统计。这是否表明问题数据库上的自动统计有问题?

在测试时,我确实清除了缓存,DBCC FREEPROCCACHE因此引擎每次都必须生成一个计划。但是,我没有在及时返回数据的数据库上执行此操作。

抱歉含糊不清,很遗憾,由于敏感信息,我无法分享查询计划。

目前,我们只运行自动统计更新(没有预定的统计/索引维护)。这会改变;数据库在某种程度上被忽视了。我还应该提到,这些数据库在 Azure 中。我不确定这是否会改变什么?

sql-server statistics index-statistics azure-sql-database

3
推荐指数
1
解决办法
86
查看次数