Я унаследовал очень большое (сотни таблиц и форм) приложение, написанное на AccessXP.Приложение отлично работает на Windows 7 после установки.Однако после установки Office 2010 в приложении возникает несколько ошибок.Наиболее болезненным из них является то, что определенные запросы занимают больше времени.То, что раньше занимало 5 секунд, может занять более 10-12 минут.Три таблицы / запросы имеют следующее: lcltblJC_Final: 40 записей.Правильные индексы lkpqryJob: 1964 записей.правильные индексы в таблицах, на которые он ссылается lkpqry_CalculatedCustRespAmount: 2365 записей.Надлежащие индексы для одной таблицы, на которую она ссылается.
Основной запрос:
SELECT lcltblJC_Final.*,
lkpqryJob.ScvWr,
lkpqryJob.WF_RONum,
lkpqryJob.WF_CustRespNote,
lkpqryJob.WF_DiscountNote,
lkpqryJob.WF_CustRespAmt,
lkpqry_CalculatedCustRespAmount.CalcTotal
FROM lcltblJC_Final
LEFT JOIN lkpqryJob ON
lcltblJC_Final.WF_Shop_ID = lkpqryJob.WF_Shop_Key)
INNER JOIN lkpqry_CalculatedCustRespAmount ON
lcltblJC_Final.WF_Shop_ID = lkpqry_CalculatedCustRespAmount.WF_Shop_ID
WHERE
(lcltblJC_Final.[IncomeCost]+lcltblJC_Final.[COGSCost])<>0;
Я удалил каждое из объединений, чтобы проверить, откуда исходит задержка.У lkpqryJob нет проблем.lkpqry_CalculatedCustRespAmount - наш преступник.Это объединение - задержка, с которой мы сталкиваемся.Вот этот запрос:
SELECT tblWF_Total.WF_Shop_ID, -[tblWF_Total_CT] AS CalcTotal
FROM tblWF_Total
WHERE (((tblWF_Total.TotalLabel_ID)=1));
Как видите, здесь не совсем страшный запрос.Есть идеи, почему это так медленно?