Индексирование столбцов в MS Access
С некоторой помощью я недавно создал запрос, используя 2 локальные таблицы; одна из таблиц - "Продажи", а другая - "Ежедневные цены". Наша таблица продаж в настоящее время не может хранить цену, по которой продукт был продан за день, поэтому мы извлекаем эту цену из таблицы "Дневные цены", сопоставляя идентификатор продукта, а также поля даты в обеих таблицах. Ежедневная таблица цен буквально состоит из 3 полей (идентификатор продукта, дата, цена), добавляемых в основную таблицу каждый день (около 50 тыс. Новых строк в день). Запрос должен был учитывать тот факт, что таблица "Суточные цены" генерируется только в рабочие дни, а продажи будут в выходные. Для этого логика вводит цену с первой доступной даты после даты продажи (например, о сделке, сделанной в пятницу или субботу, будет сообщаться использование цены, созданной в понедельник).
Код, который я использовал, кажется, работает, когда я использую небольшой примерный набор данных, однако он всегда работает с большими. Ниже приведен код, который я использую:
SELECT ProdID,
Date,
(SELECT Price
FROM PRICE_TABLE P
WHERE P.ProdID = S.ProdID
AND P.Date = (SELECT MIN(P2.Date)
FROM PRICE_TABLE P2
WHERE P2.ProdId = P.ProdID
AND P2.Date >= S.Date))
FROM SALES_HISTORY S;
Мой вопрос, как бы я ускорить это? Будет ли индексирование этих полей улучшать скорость? Я никогда не индексировал поля раньше, поэтому мне нужно немного помочь в этом.
Спасибо!