Творческая задачка по SQL
В общем, мой скрипт уже работает и будет еще довольно долго работать, видимо.
Но может кто чего умное подскажет как тут всё за 5 минут забацать.
Итак, база на MySQL 5.1.
Имеется небольшая такая табличка в ~140млн. записей (объём дата-файла - чуть менее 50gb).
Структура таблицы:
id BIGINT UNSIGNED AUTOINC,
object_id VARCHAR(32),
update_time DATETIME,
data_field1 VARCHAR, data_field2 VARCHAR, data_field3 INT, data_field4 VARCHAR...
Полей не сильно много (в пределах пары десятков). Там просто данные разные, совершенно не суть какие.
Поле id, как нетрудно догадаться, является PRIMARYKEY.
object_id не является уникальным и может повторяться, отражая состояния объекта в разное время.
update_time - это, соотв время добавления данных.
В общем и целом всегда соблюдено правило, что запись с бОльшим update_time имеет бОльший id. Хотя тесты показали, что выборки что по id, что по update_time работают примерно с одинаковой производительностью.
Уникальных объектов - около 7млн.
Задача: нужно вычистить все записи, кроме последнего состояния каждого объекта.
Можно прям запросами писать. Не забываем, что планы исполнения могут и гулять в зависимости от количеств обработки
Жизнь коротка. Потерпи немножко.
Бог один. Просто протоколы доступа разные...