2013-10-14 4 views
14

Es gibt einige Spalten, für die ich Indexe erstellen möchte, um die Such- und Sortiergeschwindigkeiten zu verbessern. Wenn die Spalte als UNIQUE markiert, zum Beispiel:Erfordert eine UNIQUE-Einschränkung die Notwendigkeit eines expliziten Index in Sqlite?

CREATE TABLE "foo" (
    "bar" TEXT NOT NULL UNIQUE 
) 

ist die Spalte „bar“ jetzt so indiziert, dass diese:

CREATE INDEX foo_bar ON foo(bar) 

wird keinen Geschwindigkeitsbonus für sucht und sortiert zur Verfügung stellen?

Antwort

12

UNIQUE und PRIMARY KEY Constraints tatsächlich erstellen einen internen Index, um ihre Lookups zu beschleunigen, so dass Sie keine eigenen erstellen müssen.
(siehe documentation)

+0

die Notiz über den „erheblichen Mehraufwand“ ist nicht mehr auf der SQLite-Seite zur Verfügung. Wahrscheinlich bedeutet dies, dass dies nicht mehr der Fall ist und Sie können einen expliziten Index ohne Overhead erstellen. –

+0

@riot_starter Nun, der Overhead war nie größer als der für einen expliziten Index –

+0

Wenn das der Overhead ist, ich denke, es ist vernachlässigbar, verglichen mit der Tatsache, dass Sie einen aussagekräftigeren Indexnamen in EXPLAIN QUERY PLAN haben, als wenn Sie verwenden der interne (vorausgesetzt, dass SQLite keinen redundanten internen Index erstellt). –

Verwandte Themen