CoreData / SQLite - самый быстрый способ определить, не заканчивается ли поле конкретной строкой - PullRequest
1 голос
/ 25 сентября 2010

Я использую CoreData с поддержкой SQLite и пытаюсь найти самый быстрый способ исключить строки, где поле AirDate заканчивается на -00-00

Я заметил, что

[NSPredicate predicateWithFormat:@"NOT AirDate CONTAINS %@", @"-00-00"]

намного быстрее, чем

[NSPredicate predicateWithFormat:@"NOT AirDate LIKE %@", @"*-00-00"]

Могу ли я сделать какие-либо другие оптимизации? Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 ноября 2010
[NSPredicate predicateWithFormat:@"NOT AirDate CONTAINS %@", @"-00-00"]

Был самым быстрым в моих тестах, так что это то, с чем я пошел.

0 голосов
/ 26 сентября 2010

Вы можете попробовать использовать регулярное выражение:

[NSPredicate predicateWithFormat:@"NOT AirDate MATCHES %@", @"-00-00$"]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...