У меня есть таблица MySQL от стороннего приложения, которая имеет миллионы строк и только один индекс - метка времени каждой записи. Теперь я хочу сделать несколько тяжелых самостоятельных объединений и запросов к данным, используя поля, отличные от отметки времени. Выполнение запроса к исходной таблице приведет к обходу базы данных, а добавление индексов в таблицу - не вариант. Кроме того, мне нужны только записи, которые новее одной недели.
Моя текущая стратегия эффективного выполнения запросов заключается в использовании отдельной таблицы (aux_table), которая имеет необходимые индексы. Мои вопросы: Есть ли другой способ выполнить запросы? , а если нет, Как эффективно обновить данные в индексированной таблице?
На данный момент я нашел два подхода для обновления aux_table:
- Обрезать aux_table и вставить нужные данные из исходной таблицы. Не очень эффективно, потому что все индексы должны быть заново записаны.
- Проверьте наибольшую временную метку в aux_table и вставьте все записи с большей или равной временной меткой из исходной таблицы. Изредка сбрасывайте старые записи. Только копирование записей с большей отметкой времени приводит к удалению записей (из-за записей с такой же отметкой времени, которые были вставлены в исходную таблицу после последнего обновления).