【发布时间】:2014-03-07 18:11:40
【问题描述】:
我有一个查询,其中有多个查询,它们在最后捆绑在一起。我正在优化它,让它运行得更快。我正在使用 3 个查询来创建表并将记录插入其中。我查看了我的执行计划,发现其中一个消耗了相对于批次的 100% 的成本,因此我将其更改为 ;WITH CTE AS() 的形式,这使其成本降低到批次的 64%。
现在我看到这个查询中的Hash Match (Aggreagate) 代表了这个查询成本的 41%。从估计的计划中还说Missing Index (Impact 71.7682): CREATE NONCLUSTERED INDEX.... 这是可以在WITH 查询中完成的吗?
这是我试图提高效率的部分
;WITH ERCNT AS (
SELECT A.MRN
, A.VISIT_ID
, A.VISIT_DATE
, COUNT(B.VISIT_ID) AS VISIT_COUNT
FROM
(
SELECT MED_REC_NO AS MRN, vst_start_dtime AS VISIT_DATE, PT_NO AS VISIT_ID
FROM smsdss.BMH_PLM_PtAcct_V
WHERE
((
Plm_Pt_Acct_Type = 'I'
AND Adm_Source NOT IN
(
'RP'
)
)
OR pt_type = 'E')
AND vst_start_dtime >= @SD
AND vst_start_dtime < @ED
)A
LEFT JOIN
(
SELECT MED_REC_NO AS MRN, VST_START_DTIME AS VISIT_DATE, PT_NO AS VISIT_ID
FROM smsdss.BMH_PLM_PtAcct_V
WHERE
((
Plm_Pt_Acct_Type = 'I'
AND Adm_Source NOT IN
(
'RP'
)
)
OR pt_type = 'E')
AND vst_start_dtime >= @SD
AND vst_start_dtime < @ED
)B
ON A.MRN = B.MRN
AND A.VISIT_DATE > B.VISIT_DATE
--AND A.VISIT_DATE < B.VISIT_DATE
GROUP BY A.MRN, A.VISIT_ID, A.VISIT_DATE
)
如果我需要提供更多信息,请告诉我。
谢谢,
【问题讨论】:
标签: sql optimization sql-server-2008-r2 query-optimization common-table-expression