2010-07-19 8 views
4

J'utilise dans mon application iPhone une très grosse base de données. Un index est utilisé sur l'une de ses colonnes pour accélérer les recherches dans cette base de données. Le problème est que cet index augmente la taille de la base de données: mon application est maintenant plus grosse que 20 Mo nécessitant un téléchargement wifi (je voudrais rester en dessous de 20 Mo pour permettre le téléchargement en 3G).Comment créer par programmation un index dans une base de données SQLite avec Xcode?

Par conséquent, afin de réduire la taille de cette base de données, je voudrais créer l'index sur l'iPhone de l'utilisateur lorsque l'application est lancée pour la première fois.

La requête SQLite Je veux exécuter est la suivante:

"CREATE INDEX INDEX_ON_MYCOLUMN SUR MA_TABLE (mycolumn)"

Savez-vous comment inclure cette requête dans mon code XCode? sqlite3_something? Par ailleurs, comment compacter par programme la base de données après cette opération?

Merci beaucoup pour votre aide!

Répondre

1

sqlite3_exec() fera probablement ce que vous voulez. Vous pouvez l'exécuter à chaque lancement au lieu du premier lancement (les temps supplémentaires échoueront inoffensivement). Bien sûr, vos temps de lancement pourraient devenir terribles. Voir aussi VACUUM ANALYZE.

+1

Merci. Il fonctionne avec une syntaxe comme suit: NSString * query = @ "CREATE INDEX IND_MYCOLUMN SUR MY_TABLE (MY_COLUMN)"; const char * sqlStatement = [query2 UTF8String]; int res = sqlite3_exec (base de données, sqlStatement, NULL, NULL, NULL); Néanmoins, créer un index sur une très grande base de données sur l'iPhone est trop long; par conséquent, j'ai dû réduire sa taille! Merci encore pour votre aide. –

Questions connexes