2011-03-29 3 views
1

De ce que je Google, sqlite does't support clustered indexes (voir Quatre: index cluster), mais ce que je ne comprends pas sont:comment SQLite stocke son contenu

Cela signifie que si votre index est ENTIER séquentielle, les dossiers sont mis physiquement dans la base de données que entiers commande, 1 puis 2 puis 3.

  1. Si certains enregistrements sont supprimés d'une table WHIC h contient un index int séquentiel, où les enregistrements de la nouvelle insertion sont placés? D'après ce que je sais, les enregistrements int ID ne feront que croître, donc les enregistrements seront ajoutés à la queue, non? Est-ce que cela signifie que les endroits supprimés sont gaspillés?
  2. Dans le cas d'aucun indice séquentiel ENTIER, est la table sqlite une table de tas? c'est-à-dire que l'enregistrement sera placé là où l'espace libre a été trouvé pour la première fois.

Répondre

0

1) droit, les dossiers seront arrivé à la queue. Oui, les espaces supprimés peuvent être gaspillés si le moteur de base de données ne peut pas les réutiliser facilement. Les emplacements non utilisés seront supprimés lorsque vous compacterez la base de données à l'aide de la commande VACUUM.

2) Oui une telle table SQL est une table de tas. Mais les index (de toute nature) sont précisément faits pour accéder aux données comme si les enregistrements étaient triés. Les index sont des valeurs triées liées aux enregistrements. Mais les nouveaux enregistrements ne sont pas nécessairement placés là où l'espace libre est d'abord trouvé. Ils sont placés là où le moteur de base de données remplir agréable de les placer en tenant compte de l'espace inutilisé et le temps d'écrire les données binaires (qui se passe dans la file d'attente est plus rapide que l'insertion dans le milieu).

Questions connexes