SQLite
 sql >> Base de données >  >> RDS >> SQLite

Lister tous les index d'une base de données SQLite

Dans cet article, je décris deux façons de renvoyer une liste d'index dans une base de données SQLite.

La première méthode (et la plus évidente) consiste à utiliser le .indexes commande point. La deuxième méthode consiste à interroger le sql_master tableau.

La commande .indexes

Voici un exemple d'utilisation de .indexes commande sur l'exemple de base de données Chinook.

.indexes 

Résultat :

IFK_AlbumArtistId IFK_PlaylistTrackTrackIdIFK_CustomerSupportRepId IFK_TrackAlbumIdIFK_EmployeeReportsTo IFK_TrackGenreIdIFK_InvoiceCustomerId IFK_TrackMediaTypeIdIFK_InvoiceLineInvoiceId sqlite_autoindex_PlaylistTrack_1IFK_InvoiceLineTrackId 

Vous pouvez également fournir un argument pour spécifier le ou les index que vous souhaitez renvoyer. Vous pouvez fournir le nom complet de l'index ou vous pouvez utiliser la correspondance de modèle pour renvoyer tous les index qui correspondent à ce modèle.

Exemple d'utilisation de correspondance de modèle :

.indexes %invoice% 

Résultat :

IFK_InvoiceCustomerId IFK_InvoiceLineInvoiceId IFK_InvoiceLineTrackId 

Le tableau sqlite_master

Comme alternative au .indexes commande, vous pouvez exécuter une requête sur le sql_master table.

Cette table contient plus que des index, mais vous pouvez utiliser un WHERE clause pour le réduire aux index :

SELECT name 
FROM sqlite_master 
WHERE type = 'index'; 

Résultat :

IFK_AlbumArtistIdsqlite_autoindex_PlaylistTrack_1IFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackIdIFK_TrackAlbumIdIFK_TrackGenreIdIFK_TrackMediaTypeId

L'un des avantages de l'utilisation de cette méthode est que vous pouvez également renvoyer la table à laquelle appartient chaque index. Ceci est stocké dans le tbl_name colonne.

Exemple :

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

Retour :

name tbl_name -------------------------------- ------------- IFK_AlbumArtistId Album sqlite_autoindex_PlaylistTrack_1 PlaylistTrackIFK_CustomerSupportRepId Client IFK_EmployeeReportsTo Employee IFK_InvoiceCustomerId Facture IFK_InvoiceLineInvoiceId InvoiceLine IFK_InvoiceLineTrackId InvoiceLine IFK_PlaylistTrackTrackId PlaylistTrackIFK_TrackAlbumId Track IFK TrackType IFK_TrackGenreId