[英]T-SQL query runs very slowly
我有一個查詢,我認為它異常長,所以我正在改變事物並嘗試不同的事物來加快它。 目前,返回少於 11k 條記錄需要 3 到 4 分鍾。
這是我的查詢:
DECLARE @PtVistitOID TABLE (
PatientVisitOID INT NOT NULL
)
INSERT INTO @PtVistitOID
SELECT DISTINCT PatientVisitOID
FROM smsdss.c_covid_ptvisitoid_tbl
WHERE PatientVisitOID IS NOT NULL
SELECT
A.OBJECTID AS PatientVisit_OID,
A.PATIENTACCOUNTID,
A.PatientVisitExtension_OID
FROM
[SC_server].[Soarian_Clin_Prd_1].DBO.HPatientVisit AS A
INNER JOIN
[SC_server].[Soarian_Clin_Prd_1].dbo.HExtendedPatientVisit AS B ON A.PatientVisitExtension_OID = B.objectid
INNER JOIN
@PtVistitOID AS C ON A.ObjectID = C.PatientVisitOID
--WHERE A.ObjectID IN (SELECT PatientVisitOID FROM @PtVistitOID);
當我檢查估計的查詢執行計划時,它說大約 95% 的時間用於將記錄插入到表中@PtVisitOID
,這部分查詢將盡可能快地運行,您可以單擊執行, @PtVisitOID
中有 13,970 行. 所以剩下的 5% 來自查詢的 rest。 整個查詢又需要 3 到 4 分鍾。
所有的連接都在完全相同類型的列上,INT。
我可以相當快地從所有單個表中獲取 select 記錄,不到 5 秒。 尤其是當我添加最后一個INNER JOIN
或將其更改為WHERE A.ObjectID IN (SELECT PatientVisitOID FROM @PtVisitOID)
時,查詢時間會增加。
有什么想法嗎?
我已經重組了我編寫查詢的方式,並且很高興地注意到執行時間下降到 1 到 2 秒之間。 我確實撤回了更少的記錄,但這很好,因為其他不再回來的記錄毫無用處。 這本身並不是加速的原因,重組才是。
DECLARE @PtVistitOID TABLE (
PatientVisitOID INT NOT NULL
)
INSERT INTO @PtVistitOID
SELECT DISTINCT PatientVisitOID
FROM smsdss.c_covid_ptvisitoid_tbl
WHERE PatientVisitOID IS NOT NULL
DECLARE @UserDefinedString TABLE (
PatientVisit_OID INT,
PatientAccountID INT,
Covid_Indicator VARCHAR(1000)
)
INSERT INTO @UserDefinedString
SELECT A.OBJECTID AS PatientVisit_OID,
A.PATIENTACCOUNTID,
--A.PatientVisitExtension_OID,
B.UserDefinedString20
FROM [SC_server].[Soarian_Clin_Prd_1].DBO.HPatientVisit AS A
INNER JOIN [SC_server].[Soarian_Clin_Prd_1].dbo.HExtendedPatientVisit AS B ON A.PatientVisitExtension_OID = B.objectid
WHERE A.PatientVisitExtension_OID IS NOT NULL
AND B.UserDefinedString20 IS NOT NULL
AND B.UserDefinedString20 != ''
SELECT A.PatientVisitOID,
B.PatientAccountID,
B.Covid_Indicator
FROM @PtVistitOID AS A
INNER JOIN @UserDefinedString AS B
ON A.PatientVisitOID = B.PatientVisit_OID
通過不混合本地和鏈接服務器表的建議,通過選擇在本地@tables 內生成所有結果,實現了所需的加速。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.