sql >> データベース >  >> RDS >> SQLite

SQLiteデータベース内のすべてのインデックスを一覧表示します

    この記事では、SQLiteデータベースのインデックスのリストを返す2つの方法の概要を説明します。

    最初の(そして最も明白な)方法は、.indexesを使用することです。 ドットコマンド。 2番目の方法は、 sql_masterにクエリを実行することです。 テーブル。

    .indexesコマンド

    .indexesの使用例を次に示します。 Chinookサンプルデータベースのコマンド。

     .indexes 

    結果:

     IFK_AlbumArtistId IFK_PlaylistTrackTrackIdIFK_CustomerSupportRepId IFK_TrackAlbumIdIFK_EmployeeReportsTo IFK_TrackGenreIdIFK_InvoiceCustomerId IFK_TrackMediaTypeIdIFK_InvoiceLineInvoiceId sqlite_autoindex_PlaylistTrack_1IFK_InvoiceLineTrackId 

    返すインデックスを指定する引数を指定することもできます。インデックスのフルネームを指定するか、パターンマッチングを使用して、そのパターンに一致するすべてのインデックスを返すことができます。

    パターンマッチングの使用例:

     .indexes %invoice% 

    結果:

     IFK_InvoiceCustomerId IFK_InvoiceLineInvoiceId IFK_InvoiceLineTrackId 

    sqlite_masterテーブル

    .indexesの代わりとして コマンドを使用すると、 sql_masterに対してクエリを実行できます。 テーブル。

    このテーブルには単なるインデックス以上のものが含まれていますが、WHEREを使用できます インデックスのみに絞り込む句:

     SELECT name 
    FROM sqlite_master 
    WHERE type = 'index'; 

    結果:

     IFK_AlbumArtistIdsqlite_autoindex_PlaylistTrack_1IFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackTrackIdIFK_TrackAlbumIdIFK_TrackGenreIdIFK_TrackMediaTypeId 

    このメソッドを使用する利点の1つは、各インデックスが属するテーブルを返すこともできることです。これはtbl_nameに保存されます 列。

    例:

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

    戻る:

     name tbl_name -------------------------------- ------------- IFK_AlbumArtistIdアルバムsqlite_autoindex_PlaylistTrack_1PlaylistTrackIFK_CustomerSupportRepId顧客IFK_EmployeeReportsTo従業員IFK_InvoiceCustomerId請求書IFK_InvoiceLineInvoiceIdInvoiceLineIFK_InvoiceLineTrackId InvoiceLineIFK_PlaylistTrackTrackIdPlaylistTrackIFK_TrackAlbumIdトラックIFK_Track 
    1. SQL Server2016RTMのデータベースのストレッチ

    2. MySQLデータベースで最大のテーブルを見つける方法は?

    3. 列のセットに対するNOTNULL制約

    4. SQL Server(T-SQL)でパーティション化されたテーブルのパーティション化列を検索する