Предикат SQL против изменяемого массива - PullRequest
0 голосов
/ 04 ноября 2011

В настоящее время у меня есть база данных «школьных» и «именных» объектов.[Школа <---- (один ко многим) -------- >> имя].Я отображаю базу данных в таблице и хочу, чтобы пользователь мог выполнять поиск, набрав.Таблица будет обновляться каждый раз, когда изменяется текст в строке поиска, поэтому мне нужно, чтобы это было эффективно.

Сейчас я выбираю изменяемый массив всех школьных сущностей в базе данных, а затем фильтрую массив на основе введенного текста.Будет ли гораздо эффективнее использовать NSP-предикат, чтобы выбирать только соответствующие школы?

Ответы [ 3 ]

1 голос
/ 04 ноября 2011

Эффективное - это загруженное слово; Ваш нынешний подход, вероятно, наиболее эффективен, но использует больше оперативной памяти. Как сказал Джереми, предикаты будут работать медленнее при доступе к хранилищу данных флэш-памяти. Если вы можете утверждать, что использование памяти является разумным (мера), ваш текущий подход, вероятно, будет лучше для пользователя. Имейте в виду наименьший общий знаменатель устройств, на которых может работать ваше приложение (например, iPhone 3g).

1 голос
/ 04 ноября 2011
NSPredicate *predicate = [NSPredicate predicateWithFormat:
                              @"schoolTitle CONTAINS[cd] %@", searchTitle];

schoolTitle - это атрибут сущности.

0 голосов
/ 04 ноября 2011

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

...