W tym artykule przedstawiam dwa sposoby na zwrócenie listy indeksów w bazie danych SQLite.
Pierwszą (i najbardziej oczywistą) metodą jest użycie .indexes
polecenie kropka. Drugą metodą jest zapytanie sql_master tabela.
Polecenie .indexes
Oto przykład użycia .indexes
polecenie w przykładowej bazie danych Chinook.
.indexes
Wynik:
IFK_AlbumArtistId IFK_PlaylistTrackTrackIdIFK_CustomerSupportRepId IFK_TrackAlbumIdIFK_EmployeeZgłoszenia do IFK_TrackGenreIdIFK_InvoiceCustomerId IFK_TrackMediaTypeIdIdLidIdIFK_InvoiceInvoice_1Możesz również podać argument, aby określić, który indeks/indeksy chcesz zwrócić. Możesz podać pełną nazwę indeksu lub użyć dopasowania do wzorca, aby zwrócić wszystkie indeksy pasujące do tego wzorca.
Przykład użycia dopasowania do wzorca:
.indexes %invoice%
Wynik:
IFK_InvoiceCustomerId IFK_InvoiceLineInvoiceId IFK_InvoiceLineTrackIdTabela sqlite_master
Jako alternatywa dla
.indexes
polecenie, możesz uruchomić zapytanie względem sql_master stół.Ta tabela zawiera więcej niż tylko indeksy, ale możesz użyć
WHERE
klauzula, aby zawęzić ją do samych indeksów:SELECT name FROM sqlite_master WHERE type = 'index';
Wynik:
IFK_AlbumArtistIdsqlite_autoindex_PlaylistTrack_1IFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackIdKpreAlbuTIR_GrackenJedną z zalet korzystania z tej metody jest możliwość zwrócenia tabeli, do której należy każdy indeks. Jest on przechowywany w tbl_name kolumna.
Przykład:
.mode column .headers on .width 32 13 SELECT name, tbl_name FROM sqlite_master WHERE type = 'index';
Powrót:
nazwa nazwa_tabeli -------------------------------- ----------------- 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