私は質問を合理的に効率的にしたいと思っています。これまでの私の研究に基づいて、SQLではインデックスを使用しています。例えばAndroid Sqlite3テーブルでインデックスを正しく使用していますか?
は私が読んでいるものを、インデックスが自動的にプライマリキーフィールド(そう_ID
がインデックス化された)とUNIQUE
フィールド用に作成されていることから、このテーブル
CREATE TABLE MYTABLE
(_ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME_ID INTEGER,
SOME_VALUE REAL,
TIMESTAMP TEXT)
を持っていると言うが、時にはに対して複数の値があるかもしれませんa NAME_ID
、SOME_VALUE
、またはTIMESTAMP
なので、いずれにもUNIQUE
を適用することはできません。
一般的なクエリの1つは、NAME_ID = x
とdate1 <= TIMESTAMP <= date2
'でこのテーブルの行を選択することです。 NAME_ID
とTIMESTAMP
の両方のインデックスを作成する必要がありますか?
CREATE INDEX MYTABLE_INDEX on MYTABLE (NAME_ID, TIMESTAMP);
か、これはそれについて移動する間違った方法です:または私は複合インデックスを作るのでしょうか?
これらのインデックスを作成すると、基本的に完了していますか?上に示したように、NAME_ID
とTIMESTAMP
の基準に基づいている場合、このテーブルの将来のクエリが効率的になるようにするために必要なすべてを行ったことがありますか?
基本的にはこれです。実際に望みの効果を達成したかどうかを確認するために、インデックスの有無にかかわらずいくつかのサンプルクエリを実際に実行します。 –
フィールドのすべての組み合わせに対してインデックスを作成することをお勧めしますか? 'NAME_ID'のためのもの、' SOME_VALUE'のためのもの、 'TIMESTAMP'のためのもの、' NAME_ID'と 'SOME_VALUE'のためのもの、' NAME_ID'と 'TIMESTAMP'のためのものなど – user6261756
私は言いません。インデックス付きスピードアップクエリでは、挿入/更新/削除速度に悪影響を与えます。私は金色のルールを使用することをお勧めします - あなたがしなければ最適化しないでください。 –