Erstellen eines Einzelspalten-Indexes
In diesem Schritt erstellen Sie eine Beispieltabelle namens users und anschließend einen Ein-Spalten-Index auf der Spalte email. Indizes sind entscheidend für die Verbesserung der Leistung von Datenbankabfragen, insbesondere bei der Arbeit mit großen Tabellen.
Verbinden Sie sich zunächst als Benutzer postgres mit der PostgreSQL-Datenbank:
sudo -u postgres psql
Erstellen Sie nun die Tabelle users. Führen Sie den folgenden SQL-Befehl aus:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100),
created_at TIMESTAMP
);
Dieser Befehl erstellt eine Tabelle namens users mit den Spalten id, username, email und created_at. Die Spalte id ist der Primärschlüssel und wird automatisch inkrementiert.
Fügen Sie als Nächstes einige Beispieldaten in die Tabelle users ein. Führen Sie die folgenden SQL-Befehle aus:
INSERT INTO users (username, email, created_at) VALUES
('john_doe', 'john.doe@example.com', NOW()),
('jane_smith', 'jane.smith@example.com', NOW()),
('peter_jones', 'peter.jones@example.com', NOW()),
('mary_brown', 'mary.brown@example.com', NOW()),
('alice_wilson', 'alice.wilson@example.com', NOW()),
('bob_davis', 'bob.davis@example.com', NOW()),
('carol_garcia', 'carol.garcia@example.com', NOW()),
('david_martinez', 'david.martinez@example.com', NOW()),
('emma_anderson', 'emma.anderson@example.com', NOW()),
('frank_taylor', 'frank.taylor@example.com', NOW());
-- Fügen Sie zusätzliche Zeilen ein, um die Tabelle groß genug für die Indexnutzung zu machen
INSERT INTO users (username, email, created_at)
SELECT
'user_' || generate_series(1, 1000),
'user' || generate_series(1, 1000) || '@example.com',
NOW();
Sie haben nun über 1000 Zeilen Daten in die Tabelle users eingefügt. Dieser größere Datensatz hilft, die Indexnutzung effektiver zu demonstrieren, da PostgreSQL typischerweise Indizes verwendet, wenn diese einen Leistungsvorteil gegenüber dem Scannen der gesamten Tabelle bieten.
Um Abfragen basierend auf der Spalte email zu beschleunigen, erstellen Sie einen Index auf der Spalte email. Führen Sie den folgenden SQL-Befehl aus:
CREATE INDEX idx_users_email ON users (email);
Dieser Befehl erstellt einen Index namens idx_users_email auf der Spalte email der Tabelle users.
Um zu überprüfen, ob der Index erstellt wurde, können Sie den Befehl \di in psql verwenden. Führen Sie den folgenden Befehl aus:
\di
Sie sollten den Index idx_users_email in der Ausgabe sehen.
Beenden Sie schließlich die psql-Shell, indem Sie Folgendes eingeben:
\q