1

3 つの列 A、B、C を持つテーブル t1 があるとします。ここで、(A,B) は一意のキー (数十万行) を構成します。クエリの 90% は SELECT C FROM t1 WHERE A=? という形式になるためです。と B =? の場合、A、B、および C のカバリング インデックスが必要だと思います。

C を含み、(A,B) を一意として定義するカバリング インデックスを作成するにはどうすればよいですか?

1つは一意で、もう1つはカバーし、INDEXED BYを使用してSELECTSのカバーインデックスを強制します。

これは合理的ですか?

4

2 に答える 2

2

SQLite 3.8.2 以降では、テーブル自体がカバリング インデックスのように動作するように、このテーブルをWITHOUT ROWID テーブルにすることができます。

CREATE TABLE t1 (
    A,
    B,
    C,
    PRIMARY KEY (A, B)
) WITHOUT ROWID;
于 2015-11-05T08:37:10.820 に答える