Что такое индексированное свойство атрибута CoreData?
У меня есть модель данных Core с 32-битным хеш-значением. Мне нужно быстро найти конкретные хэш-значения. Должен ли я использовать индексированное свойство? Я понятия не имею, что он делает, и documentation не помогает (я смотрю не в том месте?)
Итак, что именно индексируется?
![model]()
![enter image description here]()
Ответы
Ответ 1
Я бы рекомендовал прочитать это по индексам: http://en.wikipedia.org/wiki/Index_(database).
Проще говоря, механизм базы данных создает новую структуру, которая сортирует отсортированный столбец (который соответствует свойству) и ссылку на соответствующую строку для каждой записи (первичный ключ). Это позволяет ускорить поиск (поскольку поиск в упорядоченных списках выполняется быстрее, чем в неупорядоченных списках). Но это увеличивает используемое хранилище (для структуры данных) и время вставки (чтобы сохранить сортировку структуры).
Итак, да, вы должны использовать индексы в таких случаях.
Ответ 2
Если вы установите флажок, Core Data создаст индекс значений, что сделает поиск более быстрым и эффективным. Это похоже на то, что использует Spotlight. Без индекса он будет каждый раз путешествовать по базе данных. Вы говорите, что вам нужно быстро найти значения - тогда вы должны их индексировать.