sql / expert
Snippet
Optimierung von Verknüpfungstabellen mit zusammengesetzten Primärschlüsseln
Die Verwendung eines zusammengesetzten Primärschlüssels stellt die Eindeutigkeit in n:m-Beziehungen sicher und bietet gleichzeitig einen 'Clustering'-Effekt für Abfragen, die nach der ersten Spalte gefiltert werden. Ein Index in umgekehrter Reihenfolge optimiert Abfragen nach der zweiten Spalte.
snippet.sql
1
2
3
4
5
6
7
CREATE TABLE user_permissions (user_id INTEGER NOT NULL,permission_id INTEGER NOT NULL,granted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (user_id, permission_id));CREATE INDEX idx_perm_user ON user_permissions (permission_id, user_id);
Erklärung
1
PRIMARY KEY (user_id, permission_id)
Erzwingt Eindeutigkeit und erstellt automatisch einen B-Baum-Index, der mit user_id beginnt.
2
CREATE INDEX idx_perm_user ... (permission_id, user_id)
Erstellt einen Covering-Index, um schnelle Suchen von der Berechtigungsseite aus zu ermöglichen.