在我的數據庫中,我有一個名爲FinanceProfile的表。它有一個名爲FinanceProfileId的列。INNER JOIN佔用太多時間
我有另一個名爲FinanceProfileState的表。此表有一個名爲FinanceProfileId的外鍵,該外鍵引用了FinanceProfile表中的記錄。
我已經存儲的過程,其執行以下操作: -
我有一個臨時表稱爲@MatchingContactFinancialProfiles。
DECLARE @MatchingContactFinancialProfiles TABLE
(
FinanceProfileId int,
ContactId uniqueidentifier
);
@MatchingContactFinancialProfiles包含FinanceProfile表的子集。它包含大約100行。
FinanceProfileState表格與@MatchingContactFinancialProfiles約有4500匹配的行。
我做一個加入這樣的:
INSERT INTO @FinanceProfileStates
SELECT distinct fpState.FinanaceProfileId, fpState.StateId
FROM @MatchingContactFinancialProfiles fp inner JOIN FinanaceProfileState fpState
on fp.FinanceProfileId = fpState.FinanaceProfileId
我跑了探查,並從右說向左:
Step 1: Table Scan @MatchingContactFinancialProfiles - Cost 5%
Step 2: A) Hash Match Aggregate- 19%
B) Clustered Index Scan - Table - FinanaceProfileState PK - FinanaceProfileStateId - 15%
Step 3: Hash Match - Inner Join - 38%
Step 4: Distinct Sort - 15%
Step 5: Insert @FinanceProfileStates - 8%
這個查詢佔據了大部分的時間在存儲過程。我能做些什麼來使這個查詢運行得更快?
歡迎任何想法和建議!
已經大大縮短了時間。感謝您的輸入。但是,我希望它少一點。一般來說,當我們加入表格時,是否有一個縮略圖規則可以讓它更快,例如在我們使用的列上使用索引。 – SaiBand
我總是嘗試加入索引列。如果'fpState.FinanaceProfileId'沒有被索引,那麼你應該添加一個。 – DeanOC