У меня есть макс. 600000 объектов в моей базе данных. Я делаю запросы по id (int) =, uuid = и time (int) < = и результаты упорядочены по времени. Должен ли я использовать аннотацию @Index для некоторых полей и, возможно, изменить идентификатор от Integer до String? Запросы будут медленными, потому что я не могу индексировать поле времени и не могу иметь множественный индекс поля? Будет ли Sqlite лучше соответствовать моей потребности?Должен ли я использовать @Index с Realm?
Кроме того, если я храню большое количество объектов в базе данных сразу, следует ли использовать одну транзакцию для всех объектов или создать новую транзакцию для каждого объекта? Сколько памяти будет потреблять большая транзакция и есть ли производительность при создании новой транзакции для каждого объекта?
База данных будет находиться на внешнем накопителе (карте памяти) устройства Android.
Итак, я предполагаю, что если Realm не может использовать индексы, он сделает «сканирование полной строки»? Являются ли индексы реальными индексами b-дерева, где вы можете создавать и другие, кроме равных запросов или просто хеш-таблицы? Как выполняется сортировка? Является ли результирующий набор отсортированным в памяти после запроса или при выполнении запроса? – Tapani
Realm основан на столбце, поэтому поиск отдельных столбцов на самом деле очень быстрый. Наши индексы - это b + деревья, и сортировка выполняется в памяти после запроса. –
Означает ли это, что все строки считываются в память и сортируются, даже если я получаю доступ только к первым двум объектам в наборе результатов? – Tapani