2017-05-06 2 views
-1

Wenn ich einen Index mit folgendem Befehl erstellt: CREATE INDEX ixname ON tbname (id);Wie Daten aus einem PostgreSQL INDEX SELECT?

Wo ixname der Name des Index ist, tbname ist der Name der Tabelle, für die der Index erstellt wird und id ist die Spalte der Index für ist.

Jetzt, wenn ich sehen wollte, was in ixname ist, wie würde ich es tun? (Ich frage mit der Annahme, dass ein Index eine Relation/Tabelle mit sortierter Spalte ist)

+1

Ihre Frage ist überhaupt nicht klar und die referenzierte Frage/Antwort hilft nicht. –

+0

Die referenzierte Antwort tut nicht wirklich das, was Sie zu tun scheinen. Wenn Sie wissen möchten, was ein Index enthält, sehen Sie sich seine Definition an und schreiben Sie eine Abfrage, die genau das aus der entsprechenden Tabelle abruft, wenn Sie das möchten. – TZHX

+0

Ich habe bearbeitet, um die Frage hoffentlich zu klären. –

Antwort

5

Sie können einfach nicht. Nicht als Client, nicht mit SQL.

Daten im Index sind intern in PostgreSQL und für die Außenwelt nicht zugänglich. Sie können introspect your index definitions (mit pg_indexes Tabelle oder pg_get_indexdef Funktion), aber Sie können nicht nachschlagen, was tatsächlich in denen gespeichert ist.

Nun, man technisch kann find the file(s) in dem die Indexdaten (pg_class.relfilenode verwenden und für Dateien in base/ Unterverzeichnis überprüft) gespeichert und dekodieren die binary data ihre b-Bäume (oder was auch immer Ihre Indizes verwenden), aber ich bin nicht sicher, das ist was du machen willst. Es sei denn, Sie wollen PostgreSQL-Interna lernen oder hacken.

+0

Vielen Dank, dies ist viel hilfreicher als Kommentatoren. –

Verwandte Themen