Что делает индексированное свойство атрибута CoreData? - PullRequest
40 голосов
/ 29 октября 2011

У меня есть модель данных Core с 32-битным хеш-значением. Мне нужно быстро найти конкретные значения хеша. Должен ли я использовать индексированное свойство? Я понятия не имею, что он делает, и документация не помогает (я смотрю не в том месте?)

Так что же делает индексированный?

model

enter image description here

Ответы [ 2 ]

51 голосов
/ 29 октября 2011

Я бы рекомендовал прочитать это по индексам: http://en.wikipedia.org/wiki/Index_(database).

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

Так что да, вы должны использовать индексы в таких случаях.

16 голосов
/ 29 октября 2011

Если вы установите этот флажок, Core Data создаст индекс значений, что сделает поиск более быстрым и эффективным. Это похоже на то, что использует Spotlight. Без индекса ему придется каждый раз перемещаться по базе данных. Вы говорите, что вам нужно быстро найти значения, а затем индексировать их.

...