SQLiteの最適なインデックスのつけ方が知りたいです。環境は、android上での実行を想定しています。
いま、下のようなテーブルがあったとします(id列は省略)。
IDは (ID integer primary key, ...) で指定しています。
COUNTRY | COMPANY | PRODUCT |
---|---|---|
U.S. | Chrome | |
U.S. | Gmail | |
U.S. | Android | |
U.S. | Microsoft | Windows |
U.S. | Microsoft | Adobe |
U.S. | Apple | iPhone |
U.S. | Apple | iPad |
JP | Sony | walkman |
JP | Sony | xperia |
JP | panasonic | Let's Note |
テーブルの使い方としては、COUNTRY列やCOMPANY列を利用して、例えばU.S.のPRODUCTの値を集めてくるだとか、GoogleのPRODUCTの値を集めてくるといったような具合です。一番重要なのはPRODUCTであって、COUNTRYやCOMPANYはそれらをグループ分けするために利用します。具体的には、
select PRODUCT where COUNTRY = 'JP'; select PRODUCT where COUNTRY = 'U.S.' AND COMPANY = 'Google';
のようなクエリで検索をかけます。
これを高速化したいと思った場合、どのようにインデックスをつけるのが最も効果的なのでしょうか?
また、下のようにCOUNTRY列とCOMPANY列を統合した場合、なにかが変わるでしょうか?
COUNTORY_AND_COMPANY | PRODUCT |
---|---|
U.S.#Google | Chrome |
U.S.#Google | Gmail |
U.S.#Google | Android |
U.S.#Microsoft | Windows |
U.S.#Microsoft | Adobe |
U.S.#Apple | iPhone |
U.S.#Apple | iPad |
JP#Sony | walkman |
JP#Sony | xperia |
JP#panasonic | Let's Note |
回答2件
あなたの回答
tips
プレビュー