Вот решение, предполагая, что ваша цель - получить 200 ключей, которых еще нет в истории.Я попытаюсь оценить количество операций, используемых в качестве прокси-сервера для «эффективности», поскольку именно так будет взиматься плата в новой модели ценообразования
- Извлечение объекта «Пользователь»и «хронологические ключи» (1 операция чтения)
- Выполнить запрос только по ключам и получить 300 записей.(300 небольших операций)
- В своем коде вычтите любой из ключей истории из 300 записей.(0 операций)
- Если у вас получится менее 200 записей после шага 3, выберите еще 100. (повторите при необходимости) (100 небольших операций).
- Как только у вас не будет 200 клавишкак уже было видно, вы можете получить полные сущности бизнес-объектов, если они вам нужны, или отобразить ключи для пользователя.(200 операций чтения, если вы извлекаете все объекты)
Если хранилище данных поддерживает собственный оператор «НЕ В», то мы могли бы сократить 100 небольших операций с шага 2 и пропустить шаг 4.самая большая стоимость здесь будет получать фактические 200 объектов, что должно было бы произойти с или без оператора NOT IN.В конечном счете, этот метод не настолько неэффективен по сравнению с тем, что будет делать собственный оператор NOT IN.
Дальнейшая оптимизация:
Если вам не нужно отображать 200 клавишвсе сразу, тогда вы можете использовать курсоры, чтобы получить только N результатов одновременно.
Я просто догадываюсь, когда предлагаю сначала получить 300 ключей.Возможно, вам нужно получить больше или меньше.Вы также можете получить менее 100 со второй попытки.