sql >> Database >  >> RDS >> SQLite

Lijst van alle indexen in een SQLite-database

In dit artikel schets ik twee manieren om een ​​lijst met indexen in een SQLite-database te retourneren.

De eerste (en meest voor de hand liggende) methode is het gebruik van de .indexes punt commando. De tweede methode is het opvragen van de sql_master tafel.

Het .indexes-commando

Hier is een voorbeeld van het gebruik van de .indexes commando in de Chinook-voorbeelddatabase.

.indexes 

Resultaat:

IFK_AlbumArtistId IFK_PlaylistTrackTrackIdIFK_CustomerSupportRepId IFK_TrackAlbumIdIFK_EmployeeReportsTo IFK_TrackGenreIdIFK_InvoiceCustomerId IFK_TrackMediaTypeIdIFK_InvoiceLineTrack_1 

U kunt ook een argument opgeven om aan te geven welke index(en) u wilt retourneren. U kunt de volledige naam van de index opgeven of u kunt patroonovereenkomst gebruiken om alle indexen te retourneren die overeenkomen met dat patroon.

Voorbeeld van het gebruik van patroonherkenning:

.indexes %invoice% 

Resultaat:

IFK_InvoiceCustomerId IFK_InvoiceLineInvoiceId IFK_InvoiceLineTrackId 

De sqlite_master-tabel

Als alternatief voor de .indexes commando, kunt u een query uitvoeren op de sql_master tafel.

Deze tabel bevat meer dan alleen indexen, maar u kunt een WHERE . gebruiken clausule om het te beperken tot alleen indexen:

SELECT name 
FROM sqlite_master 
WHERE type = 'index'; 

Resultaat:

IFK_AlbumArtistIdsqlite_autoindex_PlaylistTrack_1IFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackTrackIdIFKGen_Track_AlbrackIdMedia 

Een voordeel van het gebruik van deze methode is dat u ook de tabel kunt retourneren waartoe elke index behoort. Dit wordt opgeslagen in de tbl_name kolom.

Voorbeeld:

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

Retour:

naam tbl_name -------------------------------- ------------- IFK_AlbumArtistId Album sqlite_autoindex_PlaylistTrack_1 AfspeellijstTrackIFK_CustomerSupportRepId Klant IFK_EmployeeReportsTo Employee IFK_InvoiceCustomerId Invoice IFK_InvoiceLineInvoiceId InvoiceLine IFK_InvoiceLineTrackIdId Playlist_trackId_InvoiceLineTrackId 
  1. Wat kan het Queryplan vertellen?

  2. Verschil tussen twee datums in MySQL

  3. SqlServer:Inloggen mislukt voor gebruiker

  4. PostgreSQL + Hibernate + Spring automatisch database maken