У меня есть модель, которая успешно мигрирует, но занимает 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 будут очень благодарны!