Миграция версии модели CoreData - PullRequest
2 голосов
/ 14 июня 2011

У меня есть модель, которая успешно мигрирует, но занимает 15-20 секунд. (Очевидно, что это должно быть выполнено в качестве фоновой задачи, а не при запуске, иначе мое приложение отключится.)

Задержка в 20 секунд, независимо от того, где она выполняется, - плохой пользовательский опыт. Я посмотрел на вывод SQL основной миграции данных, чтобы увидеть, где находятся основные узкие места, и нашел это интересное утверждение

UPDATE ZSIZE SET Z_ENT = ( CASE WHEN Z_ENT = 9 THEN 10 ELSE Z_ENT END ) WHERE Z_ENT IN (9)

Это утверждение, похоже, занимает 5 секунд (и другие таблицы для других таблиц в моей базе данных).

Конечно, из-за IN (9) в конце оператора ему не нужно запускать оператор case для каждой строки в таблице?

Почему CoreData вместо этого не выполняет этот оператор?

UPDATE ZSIZE SET Z_ENT=10 WHERE Z_ENT = 9

Для получения бонусных баллов, любые другие советы / подсказки по оптимизации миграции coredata будут очень благодарны!

1 Ответ

0 голосов
/ 14 июня 2011

Может быть, мой ответ на вопрос " Пример или объяснение миграции основных данных с несколькими проходами? " будет полезен. Речь идет о выполнении миграции за несколько проходов, чтобы иметь возможность показать определенный прогресс пользователю.

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