1
我有一個查詢可以創建一個感興趣的總體的@TABLE。它的結構是這樣的:查詢由於WHERE子句的結構而減慢速度
DECLARE @SepsisTbl TABLE (
PK INT IDENTITY(1, 1) PRIMARY KEY
, Name VARCHAR(500)
, MRN INT
, Account INT
, Age INT -- Age at arrival
, Arrival DATETIME
, Triage_StartDT DATETIME
, Left_ED_DT DATETIME
, Disposition VARCHAR(500)
, Mortality CHAR(1)
);
WITH Patients AS (
SELECT UPPER(Patient) AS [Name]
, MR#
, Account
, DATEDIFF(YEAR, AgeDob, Arrival) AS [Age_at_Arrival]
, Arrival
, Triage_Start
, TimeLeftED
, Disposition
, CASE
WHEN Disposition IN (
'Medical Examiner', 'Morgue'
)
THEN 'Y'
ELSE 'N'
END AS [Mortality]
FROM SMSDSS.c_Wellsoft_Rpt_tbl
WHERE Triage_Start IS NOT NULL
AND (
Diagnosis LIKE '%SEPSIS%'
OR
Diagnosis LIKE '%SEPTIC%'
)
)
INSERT INTO @SepsisTbl
SELECT * FROM Patients
從這點出發我有5個相同種類的查詢都在尋找不同類型的訂單,我再LEFT OUTER JOIN
到這個表。我的問題是,爲什麼我的成績下降這麼多,當我改變從這個表的where子句:
AND A.Account IN (
SELECT Account
FROM SMSDSS.c_Wellsoft_Rpt_tbl
WHERE (
Diagnosis LIKE '%SEPSIS%'
OR
Diagnosis LIKE '%SEPTIC%'
)
這樣:
AND A.Account IN (
SELECT Account
FROM @SepsisTbl
)
運行時間的推移,2.5分鐘,超過10分鐘仍然沒有結果。 CTE本身的運行速度可以按我的F5鍵。
謝謝
什麼指標上c_Wellsoft_Rpt_tbl存在嗎? –
負面,沒有。 –
優化器不保留表變量的統計信息,這可能會產生影響。根據您有多少行,臨時表可能會更快。 – andreamc