БД вида:
id, identifier, created_at, deleted_at.
Сейчас мне надо последовательно выбирая из другой большой таблицы B на 5 млн строк данные последовательно увеличению timestamp, искать в первой таблице запись, которая будет соответствовать ей, т.е A.identifier==B.identifier, B.timestamp >= A.created_at && B.timestamp <= A.deleted_at, причем B.deleted_at может быть равно NULL, если пока не удалено.
Можно, конечно, каждый раз обращаться к БД и искать нужные строчки, но для 5 млн раз это долго. Хочу кешировать данные, но не знаю как сделать индекс для от и до, что бы потом в кеше искать нужную строчку по идентификатору и диапозону времени в памяти, е обращаясь повторно к БД.
Что посоветуете использовать или как грамотно самому написать?
А это нельзя разве сделать средствами SQL?
Очевидно нужно подписаться на pg notify, и добавлять в маленькую таблицу, если строки не динамически появляются.
Там mysql. Сейчас для меня это статика, надо пересобрать отчеты используя архивные данные за прлшлые года.
Так если это статика - может вам в бд индексы сделать?
Сделаны но все равно отправит запрос, найти строчки, отправить назад довольно долго. Интересно бы в памяти у себя все собрать.
Там не так все просто. Его архивные данные могут быть на движке архив, который индексы не делает и работает как сторедж. Ему надо в чат по mysql и чтобы помогли с огородом
нет, движок там InnoDB, просто хочу не обращаться лишний раз к базе, пока не нужно и повысить скорость.
Обсуждают сегодня