2010-07-21 4 views
14

Ich verstehe nicht, was ein Index in SQLite ist oder tut. (NOT SQL) Ich denke, es ermöglicht das Sortieren in aufsteigender und absteigender Reihenfolge und den Zugriff auf Daten schneller. Aber ich rate nur hier.Was ist ein Index in SQLite?

+0

Es gibt ein exzellentes SQLite-Tutorial mit Zeichnungen, die erklären, [wie verschiedene Arten von Indizes Abfragen beschleunigen] (https://www.sqlite.org/queryplanner.html). –

Antwort

15

Warum nicht SQL? Die Antwort ist die gleiche, obwohl die internen Details zwischen Implementierungen abweichen werden.

Wenn Sie einen Index auf eine Spalte setzen, erstellt die Datenbank-Engine erwartungsgemäß einen Index, mit dem Zeilen schnell nach bestimmten Werten in einer Spalte gesucht werden können, ohne jede Zeile in der Tabelle prüfen zu müssen.

Ein einfacher (und wahrscheinlich suboptimaler) Index könnte mit einem gewöhnlichen binären Suchbaum erstellt werden.

3

Ein Index (in jeder Datenbank) ist eine Liste von einer Art, die eine sortierte (oder zumindest schnell durchsuchbar) Liste von Schlüsseln mit Informationen verknüpft über Wo finde ich den Rest der mit dem Schlüssel verbundenen Daten?

Möglicherweise finden Sie keine Informationen dazu im Internet, weil Sie annehmen, dass es ein SQLite-Konzept ist, aber es ist nicht - es ist ein allgemeines Computer-Engineering-Konzept.

3

Denken Sie an ein Adressbuch. Wenn Sie die Telefonnummer von Rossi Mario suchen, wissen Sie, dass Nachnamen alphabetisch sortiert sind, so dass Sie zum Buchstaben R gehen können, dann suchen Sie nach dem Buchstaben o und so weiter. Index tun das gleiche, sind eine Sammlung von Verweisen auf Einträge, die eine Menge Operationen beschleunigen.

Die Suche in einem ungeordneten Adressbuch wäre viel langsamer, Sie sollten mit dem ersten Namen auf der ersten Seite beginnen und auf allen Seiten suchen, bis Sie den gesuchten Namen gefunden haben.

2

Ich denke, es kann in acending zum Sortieren und schnellen Reihenfolge und Zugriff auf Daten decending.

Ja, dafür ist es. Indizes erzeugen die Abstraktion der sortierten Daten, was die Suche erheblich beschleunigt. Bei einem Index, der einen ausgeglichenen binären Suchbaum verwendet, wird bei Suchvorgängen O (log N) anstelle von O (N) Zeit verwendet.

Was die anderen Antworten haben nicht erwähnt, dass die meisten Datenbanken Indizes verwenden, um UNIQUE (und damit auch PRIMARY KEY) Einschränkungen zu implementieren. Um die Eindeutigkeit zu gewährleisten, müssen Sie erkennen können, ob der Schlüssel bereits vorhanden ist, und Sie müssen schnell danach suchen.

Werfen Sie einen Blick in Ihre SQLite-Datenbank. Diese sqlite_autoindex_ Indizes wurden erstellt, um UNIQUE-Einschränkungen zu erzwingen.

Verwandte Themen