2013-01-08 2 views
0

Мне нужно создать новую таблицу с суммами агрегатов столбцов мер в исходной таблице. Исходный стол очень большой.Использование индекса для улучшения скорости агрегатных функций в выбранном запросе

например. Источник Таблица

Category | Product | Sales 
A  | P1  | 100 
B  | P2  | 200 
C  | P3  | 300 

запросов, как:

SELECT Category, 
     Product, 
     SUM(Sales) 
FROM source_table 
GROUP BY Category. 

Существует нет, где состояние.

Будет ли индексирование помощи в ускорении процесса?
Любой альтернативный механизм для ускорения запроса?

+1

возможно. Вам нужно запустить 'EXPLAIN' в вашем запросе, чтобы узнать, что такое замедление ... просто' EXPLAIN', за которым следует ваш запрос. – Cfreak

+0

Мы выводим инструкцию объяснения. Выполните следующую команду в MySQL и после вывода на вопрос: EXPLAIN SELECT, Категорию, продукта, SUM (Sales) FROM source_table GROUP BY Категории – Namphibian

+0

Выхода объяснить заявление является: идентификатором | \t select_type | \t стол | \t тип | \t possible_keys | \t ключ | \t key_len | \t ref | \t ряды | \t Дополнительные | 1 | \t ПРОСТЫЕ | \t new_isis_indirect | \t индекс | \t NULL | \t idx_new_indirect | \t 1915 | \t NULL | \t 182753 | \t \t \t – user1957246

ответ

0

Это может помочь добавить индекс в категорию, поскольку он находится в предложении GROUP BY. Но вы делаете полный дамп таблицы, поэтому он может быть медленным.

Вероятно, лучшей стратегией является создание новой таблицы для отчета о продажах и заполнение ее на основе потребностей вашего бизнеса. Если он может обновляться только ежедневно, то планируйте хранимую процедуру для ночного ночного переустройства. Если необходимо отразить текущее состояние таблицы, вы можете использовать триггеры для обновления таблицы отчетов по мере обновления базовой таблицы. Или вы можете запустить отдельный запрос на уровне приложения для обновления таблицы отчетов при обновлении базовой таблицы.

0

Индексы - сложный инструмент. Если вы планируете добавить индекс в столбец вашей таблицы, вы должны подумать об этом как минимум:

1- Сколько разных значений у меня в этом столбце. 2- Какова пропорция между общим количеством записей и количеством разных значений. 3- Как часто я применяю, где, группировать или заказывать по статьям в этом столбце.

Как указано в ответе @Kasey, для того, что нужно видеть, вы можете добавить индекс в столбец категории, но это будет зависеть от количества различных значений, которые у вас есть для этого столбца.

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