Проблемы с Access 2002 / XP Query после установки Office 2010 - PullRequest
1 голос
/ 08 июля 2011

Я унаследовал очень большое (сотни таблиц и форм) приложение, написанное на 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));

Как видите, здесь не совсем страшный запрос.Есть идеи, почему это так медленно?

Ответы [ 2 ]

0 голосов
/ 08 июля 2011

Правильно ли работает приведенный ниже запрос, не тратя много времени.попробуйте один раз

SELECT lcltblJC_Final.*,
lkpqryJob.ScvWr,
lkpqryJob.WF_RONum,
lkpqryJob.WF_CustRespNote,   
lkpqryJob.WF_DiscountNote,
lkpqryJob.WF_CustRespAmt, 
((lcltblJC_Final.[IncomeCost])+(lcltblJC_Final.[COGSCost])) as costcalculation,
lkpqry_CalculatedCustRespAmount.CalcTotal FROM lcltblJC_Final
LEFT JOIN lkpqryJob 
ON lcltblJC_Final.WF_Shop_ID = lkpqryJob.WF_Shop_Key
LEFT JOIN 
lkpqry_CalculatedCustRespAmount ON lcltblJC_Final.WF_Shop_ID = 
lkpqry_CalculatedCustRespAmount.WF_Shop_ID 
WHERE costcalculation > 0; 
0 голосов
/ 08 июля 2011

Я не уверен, что последний SQL правильный: - [tblWF_Total_CT] AS CalcTotal .Название столбца отсутствует.Я не говорю, что это приведет к задержке, но в нем, безусловно, отсутствует либо имя столбца, либо "."вместо "_"

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