, поэтому у меня есть таблица MySQL, содержащая около 100 000 строк, и много проблем с относительно простым запросом.
Когда я сужаю поле поиска, например, до. WHERE artcode = 'A1234'
работает отлично.
Но мне нужно запустить его на всей таблице, я пытаюсь сузить его по категориям интрастата, но он все еще зависает.
Итак, я экспортировал заполнить таблицу и импортировать ее в отдельную базу данных только для того, чтобы удалить все ненужные поля и выполнить тот же запрос для той же таблицы, но с таблицей.
Все поля проиндексированы, перепробованы все поля в 1 индексе и каждое поле в своем собственном индексе. время ожидания истекло (также с превышением времени ожидания СУБД на рабочем месте при более высоких значениях)
Я могу изменить / добавить структуру, так как мне нужно только периодически запускать этот запрос.
SELECT
DISTINCT(PL2.nextartcode) as nextartcode,
`prdbesarch`.`artcode`
FROM `mydb`.`prdbesarch`
LEFT OUTER JOIN (
SELECT artcode as nextartcode, besnr, itemnr - 1 as previtemnr
FROM prdbesarch WHERE intrastat = '94051099' OR intrastat = '94052099'
) as PL2
ON CONCAT(`prdbesarch`.`besnr`,'.',`prdbesarch`.`itemnr`) =
CONCAT(PL2.besnr,'.',PL2.previtemnr)
WHERE intrastat = '94051099' OR intrastat = '94052099'
GROUP BY nextartcode
ORDER BY artcode ASC