約 30 列、 column a integer not null、b boolean not nullおよびc integer not nullその中にあるテーブルがあります。そして、よく実行されるクエリがありますa = 2 and b is true and c = <something>。
select * from my_table ここで、a = 2、b が真、c = 3215
問題は、次のように部分インデックスに列aを含める必要があるかどうかです。b
索引の作成 idx_my_table_a_b_c オン my_table USING btree (a、b、c) WHERE a = 2 AND b は真です。
または、次のようにすべきではありません:
索引の作成 idx_my_table_a_b_c オン my_table btree の使用 (c) WHERE a = 2 AND b は真です。
最初のケースではexplain出力
「my_table で idx_my_table_a_b_c を使用したインデックス スキャン (コスト = 0.00..8.27 行 = 1 幅 = 4007)」 「索引条件: ((b = true) AND (a = 2))」
そして2番目Index condの部分では不在です
「my_table で idx_my_table_a_b_c を使用したインデックス スキャン (コスト = 0.00..8.27 行 = 1 幅 = 4007)」
ところで とはIndex condどういう意味ですか?