на каждой итерации происходит запрос к спейсу? Если да, то будет ли более эффективно получить массив всех строк через index_object:select() и потом по ним итерироваться, если речь идёт про большой vinyl спейс?
Да. Нет, используйте :pairs. Если спейс большой, то из-за select все "встанет", также ответ может просто в Lua память не влезть. Итерируйтесь через :pairs и делайте fiber.yield(), через каждные N записей - это позволит работать остальным файберам и не "повесит" тарантул на большом спейсе.
А если ответ не особо большой, то будет выигрыш, если делать select? Как-раз вопрос в том, что эффективнее в большом спейсе - 100 select-ов по 1 записи или один по 100 записей?
Нет, pairs всё равно будет лучше
Обсуждают сегодня