11.10. インデックスと照合順序

インデックスはインデックス列当たり1つの照合順序のみをサポートすることができます。 複数の照合順序を考慮しなければならない場合、複数のインデックスが必要になるかもしれません。

以下の文を考えてみます。

CREATE TABLE test1c (
    id integer,
    content varchar COLLATE "x"
);

CREATE INDEX test1c_content_index ON test1c (content);

このインデックスは自動的に背後にある列の照合順序を使用することになり、

SELECT * FROM test1c WHERE content > constant;

という形式の問い合わせでは、この比較はデフォルトで列の照合順序を使用しますので、このインデックスを使用することになります。 しかし、このインデックスは何らかの他の照合順序を含む問い合わせを高速化することはできません。 このため

SELECT * FROM test1c WHERE content > constant COLLATE "y";

という形式の問い合わせも考慮しなければならない場合は、以下のように"y"照合順序をサポートする追加のインデックスを作成することになります。

CREATE INDEX test1c_content_y_index ON test1c (content COLLATE "y");