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

Liste over alle indekser i en SQLite-database

I denne artikel skitserer jeg to måder at returnere en liste over indekser i en SQLite-database på.

Den første (og mest oplagte) metode er at bruge .indexes prik kommando. Den anden metode er at forespørge sql_master tabel.

.indexes-kommandoen

Her er et eksempel på brug af .indexes kommando på Chinook-eksempeldatabasen.

.indexes 

Resultat:

IFK_AlbumArtistId IFK_PlaylistTrackTrackIdIFK_CustomerSupportRepId IFK_TrackAlbumIdIFK_EmployeeReportsTo IFK_TrackGenreIdIFK_InvoiceCustomerId IFK_TrackMediaTypeIdrackLIFKiD 

Du kan også give et argument for at angive, hvilke indeks/indekser du gerne vil have returneret. Du kan angive det fulde navn på indekset, eller du kan bruge mønstermatchning til at returnere alle indekser, der matcher det mønster.

Eksempel på brug af mønstertilpasning:

.indexes %invoice% 

Resultat:

IFK_InvoiceCustomerId IFK_InvoiceLineInvoiceId IFK_InvoiceLineTrackId 

sqlite_master-tabellen

Som et alternativ til .indexes kommando, kan du køre en forespørgsel mod sql_master bord.

Denne tabel indeholder mere end blot indekser, men du kan bruge en WHERE klausul for at indsnævre det til kun indekser:

SELECT name 
FROM sqlite_master 
WHERE type = 'index'; 

Resultat:

IFK_AlbumArtistIdsqlite_autoindex_PlaylistTrack_1IFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFTK_TrackIrackIFTrackI 

En fordel ved at bruge denne metode er, at du også kan returnere den tabel, som hvert indeks tilhører. Dette er gemt i tbl_name kolonne.

Eksempel:

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

Retur:

navn 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 

  1. MySQL:Vis med underforespørgsel i FROM-klausulens begrænsning

  2. Hvorfor er der behov for UDFØR STRAKS her?

  3. Hvordan gemmer man uuid som nummer?

  4. Android:Hvordan beder man en markør om at opdatere ListView efter sletning af databaserækken?