Производительность SQL-запросов MS-Access - низкая - PullRequest
0 голосов
/ 30 мая 2018

У меня есть запрос, который извлекает данные и присоединяется к другим запросам.Последний запрос занимает около 8 минут.Существует ли более эффективный способ запроса информации из запросов, построенных на основе запросов (например, создание таблицы с результатами первых запросов ИЛИ построение индекса - ИЛИ ??).

Мой последний запрос так же простas:

SELECT Filtered_ZFEWN.[Base 8], Filtered_ZFEWN.Notification, Filtered_ZFEWN.
[Service Product], Filtered_ZFEWN.[Product Hierarchy]
FROM Filtered_ZFEWN RIGHT JOIN 
    Notifications_by_Base_8 ON Filtered_ZFEWN.[Base 8] = 
    Notifications_by_Base_8.[ZFEWN Base 8]
WHERE Notifications_by_Base_8.[Product Hierarchy] IN 
    (SELECT Notifications_by_Base_8.[Product Hierarchy] 
     FROM Notifications_by_Base_8 
     WHERE Notifications_by_Base_8.[Product Hierarchy] NOT LIKE "*MISC*");

Этот запрос извлекает данные из 6 других запросов (вы можете видеть, что он явно извлекает данные из двух запросов, но другие запросы также основаны на 4 запросах).Я ищу улучшения производительности.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Не является ли подзапрос (запрос после ключевого слова IN) избыточным и всегда возвращает один и тот же результат?- Peeyush 15 часов назад

@ peeyush Вы правы - Это ответ.Я удалил подзапрос select и сохранил только часть NOT MIKE «misc», и это заняло 8 секунд.Спасибо!!!- Analyst123456789 11 сек. Назад edit

0 голосов
/ 30 мая 2018

Добавляя подстановочный знак в начале Like "*MISC*", вы останавливаете Access, используя любые индексы в подзапросе.

Это значительно замедлит работу с большим набором данных.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...