Question

D'après ce que je google, SQLite ne prend pas en charge les index en cluster(voir Quatre: index en cluster), mais ce que je ne comprends pas, c'est:

Cela signifie que si votre index est entier séquentiel, les enregistrements sont physiquement disposés dans la base de données dans cet ordre des entiers, 1 puis 2 alors 3.

  1. Si certains enregistrements sont supprimés d'un tableau qui 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 annexés à la queue, non? Cela signifie-t-il que les lieux supprimés sont gaspillés?
  2. Dans le cas d'un index entier séquentiel, la table SQLite est-elle une table de tas? c'est-à-dire que le record sera placé là où l'espace libre est trouvé pour la première fois.
Était-ce utile?

La solution

1) À droite, les dossiers se feront à la queue. Oui, les lieux supprimés peuvent être gaspillés si le moteur de base de données ne peut pas le réutiliser facilement. Les endroits inutilisés seront supprimés lorsque vous compactez la base de données à l'aide de la commande VIDE.

2) Oui, une telle table SQL est une table de tas. Mais les index (de toute nature) sont fabriqués précisément 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 trouvé pour la première fois. Ils sont placés là où le moteur de la base de données remplit agréable pour les placer en tenant compte de l'espace inutilisé et du temps pour écrire les données binaires (se produire dans la file d'attente est plus rapide que l'insertion au milieu).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top