【发布时间】:2014-06-10 00:12:03
【问题描述】:
在我的数据库中,我有一个名为 FinanceProfile 的表。它有一个名为 FinanceProfileId 的列。
我有另一个名为 FinanceProfileState 的表。此表有一个名为 FinanceProfileId 的外键,它引用 FinanceProfile 表中的记录。
我已经存储了 proc,它执行以下操作:-
我有一个名为 @MatchingContactFinancialProfiles 的临时表。
DECLARE @MatchingContactFinancialProfiles TABLE
(
FinanceProfileId int,
ContactId uniqueidentifier
);
@MatchingContactFinancialProfiles 包含 FinanceProfile 表的子集。它包含大约 100 行。
FinanceProfileState 表有大约 4500 个与 @MatchingContactFinancialProfiles 匹配的行。
我正在做这样的连接:
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%
此查询在存储过程中占用了大部分时间。我该怎么做才能使这个查询运行得更快?
欢迎任何想法和建议!!!!
【问题讨论】:
标签: sql-server-2008