2011-10-27 25 views
7

Kalıcılık deposu olarak SQLite kullanan bir CoreData modelim var. Her kayda bir miktar işlem yaptıktan sonra çok sayıda satır eklemem gerekiyor. SQLitetoplu ekler

PRAGMA synchronous=OFF 
PRAGMA count_changes=OFF 
PRAGMA journal_mode=MEMORY 
PRAGMA temp_store=MEMORY 

o tamamlamak için saat çift sürer gibi ben işlem süresi hızlandırmak için ihtiyaç için bu komutları göndermek için herhangi bir yolu var mı.

Herhangi bir ipucu takdir edilecektir.

Teşekkür

cevap

12

mağaza koordinatörüne mağaza eklerken pragmas belirtebilirsiniz:

NSMutableDictionary *pragmaOptions = [NSMutableDictionary dictionary]; 
[pragmaOptions setObject:@"OFF" forKey:@"synchronous"]; 
[pragmaOptions setObject:@"OFF" forKey:@"count_changes"]; 
[pragmaOptions setObject:@"MEMORY" forKey:@"journal_mode"]; 
[pragmaOptions setObject:@"MEMORY" forKey:@"temp_store"]; 
NSDictionary *storeOptions = 
    [NSDictionary dictionaryWithObject:pragmaOptions forKey:NSSQLitePragmasOption]; 
NSPersistentStore *store; 
NSError *error = nil; 
store = [psc addPersistentStoreWithType:NSSQLiteStoreType 
      configuration: nil 
      URL:url 
      options:storeOptions 
      error:&error]; 

(Persistent Store Features uyarlanmıştır)

şiddetle de "Verimli Veri Aktarma" okuma öneririm .

İlgili belgeler: NSSQLitePragmasOption Efficiently Importing Data

+0

sayesinde, bu journal_mode bellek ile beni kurtardý !!!! – SpaceDog

+0

Bellek modunun sonuçlarından haberdar olmalısınız: Kötü bir şey olursa (çökme, istisna, zorlama, ...), bellek günlüğündeki verilerinizi kaybedersiniz. Eğer istediğin buysa: Bunun için git. –

+0

bir journal_mode = OFF modu var mı? – SpaceDog