Извините, не ясно, что Вы спрашиваете.
Вы выяснение, оно ускорило бы запрос такой как
SELECT product, sum(quantity) FROM receipts
GROUP BY product
, если бы Вы добавили индекс на количестве?
, Если это - вопрос, то ответ нет. Вообще говоря, индексы полезны, когда необходимо найти всего несколько строк среди многих; здесь Вам нужны все строки, таким образом, индекс не помогает.
существует неясное исключение (который применяется так редко, большинство оптимизаторов DB, вероятно, не потрудилось реализовывать этот прием). Если Ваш запрос, оказывается,
SELECT sum(foo) FROM bar
, где существует индекс на нечто, и панель является таблицей со многими столбцами, возможно читать в полном индексе, подвергаясь меньшему хиту, чем если бы Вы читаете базовую таблицу и получаете ответ непосредственно от индекса - никогда не имеющий необходимость коснуться "реальной" таблицы вообще! Это - довольно редкий случай, однако, и Вы захотите протестировать тот свой оптимизатор, знает, чтобы сделать это перед доверием этому слишком много.
Нет. Индексы улучшают поиски путем ограничения, сколько проверок требуется. Агрегатная функция (количество, макс., минута, сумма, в среднем) должна пробежать все записи в столбце независимо.
Если индекс покроет, то это обычно будет быстрее. Сколько быстрее будет определено различием между числом столбцов в таблице по сравнению с числом в индексе. Кроме того, это могло бы быть быстрее, если существуют какие-либо критерии фильтрации.
Если Вы хотите сделать суммирование быстрее, Вы можете, предварительно осуществил результат. На Oracle используйте Осуществленные Представления на MS использование SQL Индексные представления .
На Вашем конкретном вопросе "Действительно ли создание является индексом для столбца, который суммируется, не быстрее, чем никакой индекс?", ответ является №
, который ответ на Ваш вопрос заключается на ответе Spencer:
"Агрегатная функция (количество, макс., минута, сумма, в среднем) должна пробежать все записи в столбцы, суммируемые независимо".
Просто разъяснил контекст столбцов в ответе Spencer. Его ответ корректен, тем не менее.
Я нашел индексирование столбец в поле where (productid здесь) помогает при использовании этого запроса:
SELECT productid, sum (количество) FROM поступления WHERE productid = 1 GROUP BY productid
Один из моих запросов изменился с 45 секунд до почти мгновенного после того, как я добавлен индекс.