SQLite
 sql >> Database >  >> RDS >> SQLite

Elenca tutti gli indici in un database SQLite

In questo articolo descrivo due modi per restituire un elenco di indici in un database SQLite.

Il primo (e più ovvio) metodo consiste nell'usare .indexes comando punto. Il secondo metodo consiste nell'interrogare sql_master tabella.

Il comando .indexes

Ecco un esempio di utilizzo di .indexes comando sul database di esempio Chinook.

.indexes 

Risultato:

IFK_AlbumArtistId IFK_PlaylistTrackTrackIdIFK_CustomerSupportRepId IFK_TrackAlbumIdIFK_EmployeeReportsTo IFK_TrackGenreIdIFK_InvoiceCustomerId IFK_TrackMediaTypeIdIFK_InvoiceLineInvoiceId sqlite_autoindex_PlaylistTrack_1IFK_InvoiceLinepreTrackId  

Puoi anche fornire un argomento per specificare quale indice/indici desideri vengano restituiti. Puoi fornire il nome completo dell'indice oppure puoi utilizzare la corrispondenza del modello per restituire tutti gli indici che corrispondono a quel modello.

Esempio di utilizzo del pattern matching:

.indexes %invoice% 

Risultato:

IFK_InvoiceCustomerId IFK_InvoiceLineInvoiceId IFK_InvoiceLineTrackId 

Il tavolo sqlite_master

In alternativa al .indexes comando, puoi eseguire una query su sql_master tavolo.

Questa tabella contiene più di semplici indici, ma puoi usare un WHERE clausola per restringerla ai soli indici:

SELECT name 
FROM sqlite_master 
WHERE type = 'index'; 

Risultato:

IFK_AlbumArtistIdsqlite_autoindex_PlaylistTrack_1IFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackTrackIdIFK_TrackAlbumIdIFK_TrackGenreIdIFK_TrackMediaTypeId

Un vantaggio dell'utilizzo di questo metodo è che puoi anche restituire la tabella a cui appartiene ogni indice. Questo è memorizzato in tbl_name colonna.

Esempio:

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

Ritorno:

nome tbl_name -------------------------------- ------------- IFK_AlbumArtistId Album sqlite_autoindex_PlaylistTrack_1 PlaylistTrackIFK_CustomerSupportRepId Customer IFK_EmployeeReportsTo Employee IFK_InvoiceCustomerId Invoice IFK_InvoiceLineInvoiceId InvoiceLine IFK_InvoiceLineTrackId InvoiceLine IFK_PlaylistTrackTrackId PlaylistTrackIFK_TrackAlbumId Track IFK_TrackGenreId Track IFK_TrackMediaTypeId Track