約 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
どういう意味ですか?