Я разработчик, и я сталкиваюсь с проблемой при управлении таблицей с большим количеством записей.
Я выполняю задание cron для заполнения данных в первичной таблице (таблица A), которая имеет 5-6 столбцов и приблизительно от 4 000 000 до 5 000 000 строк, а затем создаю другую таблицу, и данные в этой таблице будут продолжать увеличиваться со временем.
ТАБЛИЦА A содержит необработанные данные, а моя таблица вывода - ТАБЛИЦА B
Мой скрипт cron обрезает данные в таблице B, а затем вставляет данные с помощью запроса select
TRUNCATE TABLE_B;
INSERT INTO TABLE_B (field1, field2)
SELECT DISTINCT(t1.field2), t2.field2
FROM TABLE_A AS t1
INNER JOIN TABLE_A t2 ON t2.field1=t1.field1
WHERE t1.field2 <> t2.field2
GROUP BY t1.field2, t2.field2
ORDER BY COUNT(t1.field2) DESC;
Выше выборочный запрос производит примерно от 1,500 000 до 2 000 000 строк
Теперь заполнение ТАБЛИЦЫ B занимает слишком много времени, и в то же время. Если мое приложение пытается получить доступ к ТАБЛИЦЕ B, тогда запрос выбора завершается неудачей
Объяснение результатов запроса следующее:
'1','PRIMARY','T1','ALL','field1_index',NULL,NULL,NULL,'431743','Using temporary;Using filesort'
'1','PRIMARY','T2','ref','field1_index','field1_index','767','DBNAME.T1.field1','1','Using where'
Может кто-нибудь помочь мне в улучшении этого процесса или подсказать альтернативы для вышеуказанного процесса?
Спасибо
Suketu