sql >> Base de Datos >  >> RDS >> SQLite

Listar todos los índices en una base de datos SQLite

En este artículo, describo dos formas de devolver una lista de índices en una base de datos SQLite.

El primer método (y el más obvio) es usar .indexes comando de punto El segundo método es consultar el sql_master mesa.

El comando .indexes

Aquí hay un ejemplo del uso de .indexes comando en la base de datos de ejemplo de Chinook.

.indexes 

Resultado:

IFK_AlbumArtistId IFK_PlaylistTrackTrackIdIFK_CustomerSupportRepId IFK_TrackAlbumIdIFK_EmployeeReportsTo IFK_TrackGenreIdIFK_InvoiceCustomerId IFK_TrackMediaTypeIdIFK_InvoiceLineInvoiceId sqlite_autoindex_PlaylistTrack_1IFK_InvoiceLineTrackId 

También puede proporcionar un argumento para especificar qué índice/índices desea devolver. Puede proporcionar el nombre completo del índice o puede usar la coincidencia de patrones para devolver todos los índices que coincidan con ese patrón.

Ejemplo de uso de coincidencia de patrones:

.indexes %invoice% 

Resultado:

IFK_InvoiceCustomerId IFK_InvoiceLineInvoiceId IFK_InvoiceLineTrackId 

La tabla sqlite_master

Como alternativa a los .indexes comando, puede ejecutar una consulta contra el sql_master mesa.

Esta tabla contiene más que solo índices, pero puede usar un WHERE cláusula para reducirlo a solo índices:

SELECT name 
FROM sqlite_master 
WHERE type = 'index'; 

Resultado:

IFK_AlbumArtistIdsqlite_autoindex_PlaylistTrack_1IFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackTrackIdIFK_TrackAlbumIdIFK_TrackGenreIdIFK_TrackMediaTypeId

Una ventaja de utilizar este método es que también puede devolver la tabla a la que pertenece cada índice. Esto se almacena en el tbl_name columna.

Ejemplo:

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

Devolver:

nombre nombre_tbl -------------------------------- ------------------- IFK_AlbumArtistId Álbum sqlite_autoindex_PlaylistTrack_1 PlaylistTrackIFK_CustomerSupportRepId Cliente IFK_EmployeeReportsTo Employee IFK_InvoiceCustomerId Factura IFK_InvoiceLineInvoiceId InvoiceLine IFK_InvoiceLineTrackId InvoiceLine IFK_PlaylistTrackTrackId PlaylistTrackIFK_TrackAlbu TrackmIdGen Pre TrackIFK_TrackId Media