Подтвердить что ты не робот

Что такое индексы в инспекторе модели данных Core-Data Xcode

В Xcode вы можете добавить "Индексы" для объекта в инспекторе модели данных.

Xcode sidebar showing the Indexes view

Для скриншота я дважды нажал "добавить", чтобы "запятая, разделенная, свойства" была только значением по умолчанию.

Что именно эти индексы?
Они имеют какое-либо отношение к индексированным атрибутам? И если у них есть разница между указанием индексов в этом инспекторе и выбором "Индексированный" для отдельного атрибута?

4b9b3361

Ответ 1

Оптимизация поиска и сортировки основных данных

Как гласит название, индексирование ускоряет поиск и сортировку вашей базы данных. Однако замедляет сохранение изменений в постоянном хранилище. Это важно, если вы используете объекты NSPredicate и NSSortDescriptor в своем запросе.

Скажем, у вас есть два объекта: PBOUser и PBOLocation (многие для многих). Вы можете увидеть его свойства на изображении ниже:

enter image description here

Предположим, что в базе данных 10 000 пользователей и 50 000 мест. Теперь нам нужно найти каждого пользователя с электронной почтой, начиная с a. Если мы предоставим такой запрос без индексации, Core Data должен проверить каждую запись (в основном 10 000).

Но что, если он проиндексирован (другими словами, отсортирован по электронной почте)? → Затем Core Data проверяет только те записи, которые начинаются с a. Если Core Data достигнет b, то он прекратит поиск, потому что очевидно, что записей больше нет, чей адрес электронной почты начинается с a, поскольку он индексируется.

Как включить индексирование в модели Core Data изнутри Xcode:

enter image description here
или
enter image description here

Надеюсь, они эквивалентны: -)

Но что, если бы вы хотели: электронные письма начинались с a, а имя начиналось с b. Вы можете выполнить эту проверку INDEXED для свойства name для объекта PBOUser или:

enter image description here

Вот как вы можете оптимизировать свою базу данных:-)

Ответ 2

Используйте список индексов для добавления составных индексов для объекта. Компонентный индекс - это индекс, который охватывает несколько атрибутов или отношений. Компонентный индекс может ускорить поиск. Имена атрибутов и отношений в вашей модели данных являются наиболее распространенными индексами. Вы должны использовать хранилище SQLite для использования составных индексов.

Ответ 3

Добавление строки с единственным атрибутом в список Indexes эквивалентно выбору Indexed для этого атрибута: он создает индекс для атрибута для ускорения поиска в операторах запросов.

Список Indexes предназначен для составных индексов. Компонентные индексы полезны, когда вы знаете, что будете искать значения этих атрибутов, объединенные в предложение WHERE запроса:

SELECT * FROM customer WHERE surname = "Doe" AND firstname = "Joe";

Этот оператор может использовать составной индекс surname, firstname. Этот индекс также будет полезен, если вы просто выполните поиск surname, но не, если вы ищете только firstname. Подумайте об индексе, как о телефонной книге: сначала он сортируется по фамилии, а затем по имени. Поэтому порядок атрибутов важен.