La Base de données SQLite donne l'avertissement automatique d'index sur les <table table_name>(colonne) Après la mise à jour Android L
J'ai mis à jour mon Nexus 7 avec Android 5.0 Lollipop, Avant que ma demande va bien avec de Base de données SQLite mais maintenant, Chaque fois que j'exécute tout type de requête, Il me donne journal de chat erreur comme:
12-09 12:37:04.942: E/SQLiteLog(13041): (284) automatic index on area(server_id)
12-09 12:37:04.942: E/SQLiteLog(13041): (284) automatic index on account(area_id)
12-09 12:37:04.942: E/SQLiteLog(13041): (284) automatic index on staff_visit(account_id)
12-09 12:37:04.942: E/SQLiteLog(13041): (284) automatic index on ordertab(account_id)
12-09 12:37:04.960: E/SQLiteLog(13041): (284) automatic index on area(server_id)
12-09 12:37:04.960: E/SQLiteLog(13041): (284) automatic index on account(area_id)
12-09 12:37:04.960: E/SQLiteLog(13041): (284) automatic index on staff_visit(account_id)
12-09 12:37:04.960: E/SQLiteLog(13041): (284) automatic index on ordertab(account_id)
12-09 12:37:04.978: E/SQLiteLog(13041): (284) automatic index on area(server_id)
12-09 12:37:04.978: E/SQLiteLog(13041): (284) automatic index on account(area_id)
12-09 12:37:04.978: E/SQLiteLog(13041): (284) automatic index on staff_visit(account_id)
12-09 12:37:04.978: E/SQLiteLog(13041): (284) automatic index on ordertab(account_id)
Ainsi en Est-il de l'Erreur de Tout Sucette Erreurs? Je pense que oui parce que je n'ai pas mis à jour mon code avant et après la mise à niveau de ce système d'exploitation.
- BTW auto-index est bon améliore les performances des requêtes temps
- Étrange, mais comme je l'ai créé manuellement index pour ma recherche ou rejoint les colonnes, mais encore de l'auto, les indices sont en cours de création.
Vous devez vous connecter pour publier un commentaire.
L'indexation automatique a été introduit dans sqlite 3.7.17. Une version de sqlite avec cette fonctionnalité est uniquement inclus dans Android L developer preview. C'est pourquoi vous obtenez le message uniquement sur Lollipop, mais pas plus tôt. Même si, il est enregistré comme une erreur, c'est vraiment juste un message.
Fondamentalement, l'indexation automatique entre en jeu lorsque vous êtes en train de faire des recherches sur les colonnes non indexées. sqlite assume qu'il y a tellement de données que la génération d'un index temporaire est moins cher que le brut de recherche.
Envisager l'ajout explicite, permanente indices pour votre recherche de colonnes avec
CREATE INDEX
. Par exemple, après votreCREATE TABLE
:où vous pouvez chercher
tablename(columnname)
de l'autoindex messages produits par sqlite.Si vous voulez juste l'ancien comportement de retour, vous pouvez désactiver l'auto-indexation avec
WHERE
à moins que votre charge de travail est fortement insérer à base dereference_num
de mes 5 tables après la création de tables, mais je suis encore en train de celog 02-11 23:49:35.588: E/SQLiteLog(20914): (284) automatic index on sqlite_sq_B76A2C00(reference_num) 02-11 23:49:35.588: E/SQLiteLog(20914): (284) automatic index on sqlite_sq_B76A2980(reference_num) 02-11 23:49:35.589: E/SQLiteLog(20914): (284) automatic index on sqlite_sq_B76A2700(reference_num) 02-11 23:49:35.589: E/SQLiteLog(20914): (284) automatic index on sqlite_sq_B76A2480(reference_num)
INTEGER
plutôt que commeINTEGER PRIMARY KEY
. Donner à ce dernier l'essayer, le cas échéant.C'était le poste le plus élevé alors que j'étais à la recherche dans ce problème. Bien que j'ai un projet C# et il pourrait ne pas être pertinente pour l'OP, j'ai pensé qu'il pourrait encore être utile pour quelqu'un.
Pour ceux qui se demandent pourquoi le message continue d'apparaître, même si un indice a été créé de façon explicite; peut-être que votre requête à l'aide d'un classement différent.
J'avais un tableau avec une colonne de texte et d'une requête de sélection avec un où la déclaration spécifiant
where name = @var1 COLLATE NOCASE
. Cela a déclenché les mises en garde, comme l'indice que j'avais créé a été le classement par défaut.Ainsi, la réécriture de l ' index, ou l'instruction create table, pour spécifier nocase pour cette colonne, fait l'avertissement disparaît.