Хорошая стратегия для копирования «скользящего окна» данных из таблицы? - PullRequest
1 голос
/ 27 мая 2010

У меня есть таблица MySQL от стороннего приложения, которая имеет миллионы строк и только один индекс - метка времени каждой записи. Теперь я хочу сделать несколько тяжелых самостоятельных объединений и запросов к данным, используя поля, отличные от отметки времени. Выполнение запроса к исходной таблице приведет к обходу базы данных, а добавление индексов в таблицу - не вариант. Кроме того, мне нужны только записи, которые новее одной недели.

Моя текущая стратегия эффективного выполнения запросов заключается в использовании отдельной таблицы (aux_table), которая имеет необходимые индексы. Мои вопросы: Есть ли другой способ выполнить запросы? , а если нет, Как эффективно обновить данные в индексированной таблице?

На данный момент я нашел два подхода для обновления aux_table:

  1. Обрезать aux_table и вставить нужные данные из исходной таблицы. Не очень эффективно, потому что все индексы должны быть заново записаны.
  2. Проверьте наибольшую временную метку в aux_table и вставьте все записи с большей или равной временной меткой из исходной таблицы. Изредка сбрасывайте старые записи. Только копирование записей с большей отметкой времени приводит к удалению записей (из-за записей с такой же отметкой времени, которые были вставлены в исходную таблицу после последнего обновления).

1 Ответ

1 голос
/ 27 мая 2010

возможно:

добавить триггер к большой таблице, чтобы автоматически вставлять его и в маленькую таблицу.

затем вы можете обрезать небольшой стол до подходящего временного диапазона в любой точке.

...