Tengo una base de datos llena de información para películas, que (a su vez) se lee en la base de datos desde un archivo XML en un servidor web.Optimización de llamadas a bases de datos
lo que sucede es lo siguiente:
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
Actualmente acabo de comprobar la existencia de una película usando (lo más básico):
SELECT film_title FROM film WHERE film_id = ?
Si que devuelve una fila, entonces la película existe, si no, tengo que añadir que ...
también he intentado usar
INSERT INTO film (film_id, film_title, film_mStar, film_dStar, film_date) SELECT ?, ?, ?, ?, ?, ?, ? WHERE NOT EXISTS (SELECT 1 FROM film WHERE film_id = ?)
Para el mismo efecto en términos de tiempo de procesamiento ...
El único problema es, es que hay muchos cientos de registros en la base de datos (un montón de películas!) Y porque se tiene que comprobar para la existencia de una película en la base de datos antes de que pueda escribirla, todo el proceso termina tomando bastante tiempo (aproximadamente 27 segundos para 210 películas)
¿Existe algún método más eficiente para hacer esto o solo sugerencias? ¿en general?
lenguaje de programación es Objective-C, la base de datos está en sqlite3, la plataforma es iPhone/iPad/iPod Touch
Gracias, Dwaine
+1 Buena pregunta. ¿Cómo se dice que la película ya existe en la base de datos?Añádelo a tu publicación por favor. – DJTripleThreat
¿Hay algo más que creas que debería agregar a la publicación? –
¿Qué plataforma? Objective-C + sqlite me hace pensar en iPhone/iPad. – Seth