Mam bazę danych wypełnioną informacjami o filmach, która jest (z kolei) odczytywana do bazy danych z pliku XML na serwerze internetowym.Optymalizowanie połączeń z bazami danych
Co się dzieje, jest następujący:
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
Obecnie po prostu przetestować na istnienie folię za pomocą (bardzo podstawowy):
SELECT film_title FROM film WHERE film_id = ?
Jeśli zwraca wiersz, a następnie film istnieje, jeśli nie to muszę go dodać ...
próbowałem również używając
INSERT INTO film (film_id, film_title, film_mStar, film_dStar, film_date) SELECT ?, ?, ?, ?, ?, ?, ? WHERE NOT EXISTS (SELECT 1 FROM film WHERE film_id = ?)
Aby dokładnie taki sam efekt w odniesieniu do czasu przetwarzania ...
Jedynym problemem jest to, że istnieje wiele wiele setek zapisów w bazie danych (wiele filmów!) I dlatego, że musi sprawdzić na istnienie filmu w bazie danych, zanim będzie można go napisać, cały proces kończy się dość długo (około 27 sekund na 210 filmów).
Czy istnieje skuteczniejsza metoda wykonania tego, lub tylko sugestie ogólnie?
Język programowania jest Objective-C, baza danych jest w sqlite3, platforma jest iPhone/iPad/ipod touch
Dzięki Dwaine
+1 Dobre pytanie. Jak możesz powiedzieć, że film już istnieje w bazie danych?Dodaj to do swojego postu. – DJTripleThreat
Czy jest coś jeszcze, co Twoim zdaniem powinienem dodać do postu? –
Jaka platforma? Objective-C + sqlite sprawia, że myślę, że iPhone/iPad. – Seth