Я перефразировал предыдущий вопрос MS Access Проблема производительности запросов SQL Top N 2010 по группам (продолжение), так как я считаю, что контекст не был четко описан ранее. Ответ на мой предыдущий вопрос не дал лучший результат n по группе. Перефразированный вопрос является более общим. Теперь у меня все данные в одной таблице.
Вот моя ситуация: у меня есть таблица (Анализ), которая содержит продукты (Номер детали) различных категорий (Категория). Каждый продукт имеет цену (значение). Цель запроса — показать 10 продуктов с самой высокой ценой в каждой категории. Таблица содержит 15000 записей и будет продолжать расти.
Это запрос:
SELECT
a.Location,
a.Category,
a.Partnumber
a.Value
FROM Analysis a
WHERE a.Partnumber IN (
SELECT TOP 10 aa.Partnumber
FROM Analysis aa
WHERE aa.Category = a.Category
ORDER BY aa.Value DESC
)
ORDER BY
a.Category;
Вот мой вопрос: Мой текущий запрос работает с 1000 записями в таблице (время ответа 3 секунды). С 15000 записей запрос выполняется бесконечно долго. Как я могу перестроить запрос, чтобы значительно повысить производительность?
Ответ на мой предыдущий вопрос заключался в том, чтобы не использовать операцию в списке. Но это исключило функцию, позволяющую получить первые n записей по группам. Запрос дал первые n из всех записей.