V tomto článku nastíním dva způsoby, jak vrátit seznam indexů v databázi SQLite.
První (a nejzřejmější) metoda je použití .indexes
příkaz tečka. Druhou metodou je dotaz na sql_master tabulka.
Příkaz .indexes
Zde je příklad použití .indexes
příkaz ve vzorové databázi Chinook.
.indexes
Výsledek:
IFK_AlbumArtistId IFK_PlaylistTrackTrackIdIFK_CustomerSupportRepId IFK_TrackAlbumIdIFK_EmployeeReportsTo IFK_TrackGenreIdIFK_InvoiceCustomerId IFK_TrackMediaTypeIdInKLiice>IFKautoIdIFKLiiceMůžete také zadat argument, který určí, které indexy/indexy chcete vrátit. Můžete zadat celý název indexu nebo můžete použít porovnávání vzorů a vrátit všechny indexy, které tomuto vzoru odpovídají.
Příklad použití shody vzorů:
.indexes %invoice%
Výsledek:
IFK_InvoiceCustomerId IFK_InvoiceLineInvoiceId IFK_InvoiceLineTrackIdTabulka sqlite_master
Jako alternativa k
.indexes
můžete spustit dotaz proti sql_master stůl.Tato tabulka obsahuje více než jen indexy, ale můžete použít
WHERE
klauzule k zúžení pouze na indexy:SELECT name FROM sqlite_master WHERE type = 'index';
Výsledek:
IFK_AlbumArtistIdsqlite_autoindex_PlaylistTrack_1IFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_AldJednou z výhod použití této metody je, že můžete také vrátit tabulku, do které každý index patří. To je uloženo v tbl_name sloupec.
Příklad:
.mode column .headers on .width 32 13 SELECT name, tbl_name FROM sqlite_master WHERE type = 'index';
Návrat:
name 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