Я храню {Key, Value}
данные в ETS ordered_set
, где Key
- дата и время. Довольно просто выбрать все элементы за заданное время внутри [From, To]
.
Примерно так:
ets:select(Tab, [{{'$1', '$2'}, [{'>=', '$1', From}, {'=<', '$1', To}], ['$2']}])
У нас есть параметр Limit
в функции select()
, поэтому мы можем ограничить количество элементов, которые будут выбраны. Но как я могу указать смещение?
В качестве входных данных мой модуль получает интервал времени и номер страницы. Моя цель - вернуть товары за указанный промежуток времени и страницу. Размер страницы (Limit
) является константой. Я могу рассчитать смещение как
Offset = Limit * PageNumber - Limit
Вопрос в том, как эффективно выбрать элементы только для данной страницы?
Я знаю, что функция select()
может принимать параметр Continuation
, но у меня нет состояния из предыдущего выбора. У меня есть только номер страницы.
Возможно, мне нужно использовать другую структуру данных. Пожалуйста, порекомендуйте лучшее решение.