условно updated_at, а также region_id. задача - выбрать limit записей, у которых updated_at > некоторого переданного значения, а region_id = некоторому id региона.
как сейчас сделано: индекс по updated_at. по нему выбираются все значения без лимита, и ведется фильтрация с помощью filter
box.space['name'].index['by_updated_at']:pairs({ 100 }, { iterator = 'GT'}):filter(filter_by_region_func) - результат этой конструкции итерируется с помощью for, где после каждых 100 итераций дергается fiber.yield(). но похоже это неверно сделано, т.к. подобный запрос на большом объеме записей (8М+) - кладет тарантул ненадолго. правильно ли будет перенести yield в функцию фильтрации? в идеале также завершить получение новых записей когда будет достигнут нужный лимит. сейчас лимит в цикле обрабатывается. как это правильно сделать?
А почему индекс не по паре регион-время?
потому что по региону надо EQ а по времени GT
Обсуждают сегодня