Ищете предложения по ускорению запроса. Access 2007. Внутренний запрос занимает несколько минут, полный запрос занимает очень много времени (40 - 80 минут). Результат такой же, как ожидалось. Все индексируется.Улучшение в SQL Query - Complex Join/IN/Exists
SELECT qtdetails.F5, qtdetails.F16, ExpectedResult.DLID, ExpectedResult.NumRows
FROM qtdetails
INNER JOIN (INVDL
INNER JOIN ExpectedResult
ON INVDL.DLID = ExpectedResult.DLID)
ON (qtdetails.F1 = INVDL.RegionCode)
AND (qtdetails.RoundTotal = ExpectedResult.RoundTotal)
WHERE
(qtdetails.F5 IN (SELECT qtdetails.F5
FROM (ExpectedResult
INNER JOIN INVDL
ON ExpectedResult.DLID = INVDL.DLID)
INNER JOIN qtdetails
ON (INVDL.RegionCode = qtdetails.F1)
AND (ExpectedResult.RoundTotal = qtdetails.RoundTotal)
GROUP BY qtdetails.F5
HAVING (((COUNT(ExpectedResult.DLID)) < 2));
)
);
INVDL - 80000 записей
ExpectedResult - десять миллионов записей
qtDetails - 12000 записей
Внутренний запрос приведет около 5000 - 8000 записей. Попробовал сохранить результаты Внутреннего запроса в таблице. а затем с помощью Выберите F5 из qTempTable. Но все еще занимает много времени.
Любая помощь будет очень высоко оценена.
Тип данных:
qtdetails.F5 = Number
qtdetails.F16 = Text
ExpectedResult.NumRows = Number
INVDL.DLID = Number
ExpectedResult.DLID = Number
INVDL.RegionCode = Text
qtdetails.F1 = Text
Чтобы получить какую-либо фактическую помощь такого рода, рекомендуется также предоставить план 'EXPLAIN' (в основном, как все РСУБД решают, как искать вещи). Как минимум, зная, какие индексы у вас есть, требуется. Как долго длится? И если ваш неожиданный результат - 10 мил строк, то ** переходить ** на некоторое время. –
@ Clockwork-Muse Я проиндексировал все столбцы, участвующие в соединениях. Интересно, поможет ли конвертация «IN» в объединение. Да «ExpectedResult» будет большим, его ожидаем. Использование Access - EXPLAIN можно использовать здесь? – arcotenterprises
Не могли бы вы предоставить дополнительную информацию здесь? Каковы типы столбцов в каждой из трех таблиц? Как они сопоставляются друг с другом (от 1 до 1, от 1 до многих и т. Д.)? Было бы полезно также небольшое подмножество выборочных данных, чтобы увидеть, как все сочетается. – John