|
Не понимаю, почему Hash Join ???
|
|||
---|---|---|---|
#18+
Есть такой запрос SELECT DISTINCT TG1.FirmID , PL.PREF , PL.PLID , TG1.GroupID , TG1.ListParentID FROM SanitexDB.dbo.PRICELST as PL INNER JOIN tbTmpGroups_1 as TG1 ON TG1.FirmID = PL.FIRMID and TG1.GroupID = PL.GROUPID WHERE PL.ACTIVE = 1 Такие индексы tbTmpGroups_1 -> clustered index : FirmID, GroupID PRICELST -> notclustered index: ACTIVE, FIRMID, GROUPID в QA показывает следующее |--Hash Match(Inner Join, HASH: ([TG1].[FirmID], [TG1].[GroupID])=([PL].[FIRMID], [PL].[GROUPID]), RESIDUAL: ([PL].[FIRMID]=[TG1].[FirmID] AND [PL].[GROUPID]=[TG1].[GroupID])) |--Clustered Index Scan(OBJECT: ([VPOS].[dbo].[tbTmpGroups_1].[PK_tbTmpGroups_1] AS [TG1])) |--Hash Match(Aggregate, HASH: ([PL].[FIRMID], [PL].[PREF], [PL].[PLID], [PL].[GROUPID]), RESIDUAL: ((([PL].[FIRMID]=[PL].[FIRMID] AND [PL].[PREF]=[PL].[PREF]) AND [PL].[PLID]=[PL].[PLID]) AND [PL].[GROUPID]=[PL].[GROUPID])) |--Table Scan(OBJECT: ([SanitexDB].[dbo].[PRICELST] AS [PL]), WHERE: ([PL].[ACTIVE]=1)) Вопрос след. : ПОЧЕМУ ОН ИСПОЛЬЗУЕТ Hash Match Join ??? Вроде индексы по ключу соврадают. В чем может быть трабл ?? Спасибо всем ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2001, 14:40 |
|
Не понимаю, почему Hash Join ???
|
|||
---|---|---|---|
#18+
Все правильно, Для LOOP недостаточно статистики или много записей в таблице, для MERGE нет совпадающих последовательностей индексов. Сделай индекс просто (FirmID,GroupID) на второй таблице или в крайнем случае (FirmID,GroupID,Active). В этом случае точно будет MERGE, в крайнем случае хинтом ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2001, 15:16 |
|
|
start [/forum/topic.php?desktop=1&fid=46&tid=1827131]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
others: | 255ms |
total: | 373ms |
0 / 0 |