У меня есть база данных, которая заполнена информацией для фильмов, которая (в свою очередь) считывается в базу данных из файла XML на веб-сервере.
Происходит следующее:
Gather/Parse XML and store film info as objects
Begin Statement
For every film object we found:
Check to see if record for film exists in database
If no film record, write data for film
Commit Statement
В настоящее время я просто проверяю наличие фильма, используя (самое основное):
SELECT film_title FROM film WHERE film_id = ?
Если это возвращает строку, значит, фильм существует, если нет, то мне нужно добавить его ...
Я также пытался использовать
INSERT INTO film (film_id, film_title, film_mStar, film_dStar, film_date) SELECT ?, ?, ?, ?, ?, ?, ? WHERE NOT EXISTS (SELECT 1 FROM film WHERE film_id = ?)
Точно такой же эффект с точки зрения времени обработки ...
Единственная проблема заключается в том, что в базе данных имеется много-много сотен записей (много фильмов!) И потому, что перед тем, как записать ее, необходимо проверить наличие фильма в базе данных, весь процесс. заканчивается довольно много времени (около 27 секунд для 210 фильмов)
Есть ли более эффективный способ сделать это или просто какие-то предложения в целом?
Язык программирования - Objective-C, база данных - sqlite3, платформа - iPhone / iPad / iPodTouch
Спасибо,
Дуэйн