J'ai une base de données remplie d'informations pour les films, qui sont (à leur tour) lues dans la base de données à partir d'un fichier XML sur un serveur Web.Optimisation des appels de base de données
Qu'est-ce qui se passe est la suivante:
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
Actuellement, je juste tester l'existence d'un film en utilisant (le très basique):
SELECT film_title FROM film WHERE film_id = ?
Si cela retourne une ligne, puis le film existe, sinon je dois l'ajouter ...
J'ai également essayé d'utiliser
INSERT INTO film (film_id, film_title, film_mStar, film_dStar, film_date) SELECT ?, ?, ?, ?, ?, ?, ? WHERE NOT EXISTS (SELECT 1 FROM film WHERE film_id = ?)
Pour exactement le même effet en termes de temps de traitement ...
Le seul problème est, est qu'il ya beaucoup de centaines d'enregistrements dans la base de données (beaucoup de films!) Et parce qu'il doit vérifier pour l'existence d'un film dans la base de données avant de pouvoir l'écrire, l'ensemble du processus prend un certain temps (environ 27 secondes pour 210 films)
Y at-il une méthode plus efficace pour ce faire, ou juste des suggestions en général?
langage de programmation est Objective-C, base de données est en sqlite3, plate-forme est l'iPhone/iPad/iPod Touch
Merci, Dwaine
+1 Bonne question. Comment dites-vous que le film existe déjà dans la base de données?Ajoutez cela à votre message s'il vous plaît. – DJTripleThreat
Y at-il autre chose que vous pensez que je devrais ajouter à la publication? –
Quelle plateforme? Objective-C + sqlite me fait penser à iPhone/iPad. – Seth