SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Listar todos os índices em um banco de dados SQLite


Neste artigo, descrevo duas maneiras de retornar uma lista de índices em um banco de dados SQLite.

O primeiro (e mais óbvio) método é usar o .indexes comando ponto. O segundo método é consultar o sql_master tabela.

O comando .indexes


Aqui está um exemplo de uso do .indexes comando no banco de dados de amostra Chinook.
.indexes 

Resultado:
IFK_AlbumArtistId IFK_PlaylistTrackTrackIdIFK_CustomerSupportRepId IFK_TrackAlbumIdIFK_EmployeeReportsTo IFK_TrackGenreIdIFK_InvoiceCustomerId IFK_TrackMediaTypeIdIFK_InvoiceLineInvoiceId sqlite_autoindex_pre>listTrack_1IFK_InvoiceLineTrackId


Você também pode fornecer um argumento para especificar quais índices/índices você gostaria que fossem retornados. Você pode fornecer o nome completo do índice ou pode usar a correspondência de padrões para retornar todos os índices que correspondem a esse padrão.

Exemplo de uso de correspondência de padrões:
.indexes %invoice% 

Resultado:
IFK_InvoiceCustomerId IFK_InvoiceLineInvoiceId IFK_InvoiceLineTrackId 

A tabela sqlite_master


Como alternativa ao .indexes comando, você pode executar uma consulta no sql_master tabela.

Esta tabela contém mais do que apenas índices, mas você pode usar um WHERE cláusula para reduzi-lo a apenas índices:
SELECT name 
FROM sqlite_master 
WHERE type = 'index'; 

Resultado:
IFK_AlbumArtistIdsqlite_autoindex_PlaylistTrack_1IFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackTrackIdIFK_TrackAlbumIdIFK_TrackGenreIdIFK_TrackMediaTypeId

Um benefício de usar esse método é que você também pode retornar a tabela à qual cada índice pertence. Isso é armazenado em tbl_name coluna.

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

Retornar:
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