SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Alle Indizes in einer SQLite-Datenbank auflisten

In diesem Artikel skizziere ich zwei Möglichkeiten, um eine Liste von Indizes in einer SQLite-Datenbank zurückzugeben.

Die erste (und offensichtlichste) Methode ist die Verwendung von .indexes Punkt-Befehl. Die zweite Methode besteht darin, den sql_master abzufragen Tabelle.

Der .indexes-Befehl

Hier ist ein Beispiel für die Verwendung von .indexes Befehl in der Chinook-Beispieldatenbank.

.indexes 

Ergebnis:

IFK_AlbumArtistId IFK_PlaylistTrackTrackIdIFK_CustomerSupportRepId IFK_TrackAlbumIdIFK_EmployeeReportsTo IFK_TrackGenreIdIFK_InvoiceCustomerId IFK_TrackMediaTypeIdIFK_InvoiceLineInvoiceId sqlite_autoindex_PlaylistTrack_1IFK_InvoiceLineTrackId 

Sie können auch ein Argument angeben, um anzugeben, welche(n) Index(e) Sie zurückgeben möchten. Sie können den vollständigen Namen des Indexes angeben oder den Musterabgleich verwenden, um alle Indizes zurückzugeben, die diesem Muster entsprechen.

Beispiel für die Verwendung des Musterabgleichs:

.indexes %invoice% 

Ergebnis:

IFK_InvoiceCustomerId IFK_InvoiceLineInvoiceId IFK_InvoiceLineTrackId 

Die sqlite_master-Tabelle

Als Alternative zu den .indexes Befehl können Sie eine Abfrage für den sql_master ausführen Tisch.

Diese Tabelle enthält mehr als nur Indizes, aber Sie können ein WHERE verwenden -Klausel, um sie auf Indizes einzugrenzen:

SELECT name 
FROM sqlite_master 
WHERE type = 'index'; 

Ergebnis:

IFK_AlbumArtistIdsqlite_autoindex_PlaylistTrack_1IFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackTrackIdIFK_TrackAlbumIdIFK_TrackGenreIdIFK_TrackMediaTypeId

Ein Vorteil dieser Methode besteht darin, dass Sie auch die Tabelle zurückgeben können, zu der jeder Index gehört. Diese wird im tbl_name gespeichert Spalte.

Beispiel:

.mode column
.headers on
.width 32 13
SELECT 
  name,
  tbl_name
FROM sqlite_master 
WHERE type = 'index'; 

Zurück:

name tbl_name ---------------------------- ------------- IFK_AlbumArtistId Album sqlite_autoindex_PlaylistTrack_1 PlaylistTrackIFK_CustomerSupportRepId Kunde IFK_EmployeeReportsTo Employee IFK_InvoiceCustomerId Invoice IFK_InvoiceLineInvoiceId InvoiceLine IFK_InvoiceLineTrackId InvoiceLine IFK_PlaylistTrackTrackId PlaylistTrackIFK_TrackAlbumId Track IFK_TrackGenreId Track IFK_TrackMediaTypeI