IndexedDB использует индекс в сравнении с ключевым диапазоном? - PullRequest
1 голос
/ 24 марта 2020

В indexedDB, если ключи являются массивами целых чисел, таких как [n,0] - [n,m], для операций, которые включают получение всех записей, в которых первый элемент ключа массива равен n, или открытие курсора на тот же набор записей, есть ли какое-либо преимущество в использовании индекса для дополнительного свойства, которое хранит n, по сравнению с использованием диапазона ключей?

Причины думать, что индекс может быть не лучшим, включают то, что браузер должен поддерживать индекс для каждого изменения в хранилище объектов, дополнительное свойство должно быть добавлено к каждой записи для хранения уже сохраненных данных n, и мало что можно получить, поскольку ключи в индексе всегда будут указывать на последовательные записи в хранилище объектов а не разбросаны по всему.

Если число различных значений n, вероятно, не более 1000, а для m не более 50, использует ли индекс индекс выше диапазона ключей?

Спасибо.

1 Ответ

0 голосов
/ 31 марта 2020

Полагаю, цель indexedDB - локально хранить объекты. Это не sql, что вам нужно обновить столбцы в каждом объекте. так как вы изменяете структуру объекта (например, добавляя свойство), это правда, что все объекты в хранилище должны быть переписаны, как вы сказали ...

эммм хорошо ... другой вариант для вас - обновить БД с другим хранилищем, которое содержит нечто подобное ключу forien в sql или уникальным ключом, в котором хранятся расширения других хранимых объектов ... и в нем каждый элемент obj также должен быть таким же структурированным.

Я думаю с этого момента вы начинаете интенсивно использовать onupgradeeeded.

...