2015-11-03 3 views
3

У меня есть один временный стол с 1 миллион строк, и мне просто нужно пройти через все строки и сделать некоторые основные вычисления скалярного, что-то вроде этого:Ускорить оператор Hash Match на одном столе

SELECT m.BatteryID, m.CarID, /*calculating some scalar*/ 
FROM #Return m 
GROUP BY m.CarID, m.YearTime, m.BatteryID; 

таблица имеет один идентификатор 1,1 Кластерный индексированный ПК.

План запроса выглядит следующим образом: enter image description here

Это показывает, что у меня есть кластерный индекс сканирования, который хорошо, так как я всегда использовать все строки из таблицы, следовательно, дерево путешествовала сверху вниз. Кроме того, не кластеризованное сканирование индекса является наиболее трудоемким (17%), но Hash Match (65%) Есть ли способ повысить производительность по такому простому сценарию?

Спасибо!

+1

Вы можете попробовать добавить указатель на «CarId, YearTime, BatteryId». –

+1

В столбцовом индексе будет указана скорость 10-100x. – usr

+1

@usr да, но индекс столбцового магазина отсутствует в sql2008 – Avithohol

ответ

2

После добавления индекса как (CarId, YearTime, BatteryId), он становится 8% StreamAggregate и 90% кластеризованным сканированием индекса. Thanks Gordon

Смежные вопросы