0
私は7つのUUID列を持つテーブル "ps_wms.estoque"を持っています。 各列には索引索引があります。 表には、すべての列に固有の索引もあります。予期しないクエリプラン
create unique index idx on ps_wms.estoque (endereco_id, material_id, ..., origem_id);
以下のクエリ句一意インデックスからすべての列を使用するが、クエリプランに応じて、それは同じ値を保持するカラムである単一の列(列programacao_id)のインデックスを使用している場合に有しますすべてのレコードについてそれは私には、このクエリは一意のインデックスを使用する必要がありますように見えますか?
select
*
from
ps_wms.estoque a
where
a.endereco_id = '8d4d99b1-98f3-4768-bbdf-3768dc2be341'
and a.material_id = '8d4d99b1-98f3-4768-bbdf-3768dc2be341'
and a.reserva_id = '8d4d99b1-98f3-4768-bbdf-3768dc2be341'
and a.programacao_id = '8d4d99b1-98f3-4768-bbdf-3768dc2be341'
and a.uma_id = '8d4d99b1-98f3-4768-bbdf-3768dc2be341'
and a.tipo = '8d4d99b1-98f3-4768-bbdf-3768dc2be341'
and a.origem_id = '8d4d99b1-98f3-4768-bbdf-3768dc2be341'
Index Scan using estoque_fk5 on ps_wms.estoque a
Output: id, armazem_id, endereco_id, material_id, reserva_id, programacao_id, quantidade, version, uma_id, tipo, origem_id
Index Cond: ((a.programacao_id)::uuid = '8d4d99b1-98f3-4768-bbdf-3768dc2be341'::uuid)
Filter: (((a.endereco_id)::uuid = '8d4d99b1-98f3-4768-bbdf-3768dc2be341'::uuid) AND ((a.material_id)::uuid = '8d4d99b1-98f3-4768-bbdf-3768dc2be341'::uuid) AND ((a.reserva_id)::uuid = '8d4d99b1-98f3-4768-bbdf-3768dc2be341'::uuid) AND ((a.uma_id)::uuid = ' (...)
DDL
CREATE INDEX estoque_fk1 ON ps_wms.estoque (endereco_id);
CREATE INDEX estoque_fk2 ON ps_wms.estoque (material_id);
CREATE INDEX estoque_fk3 ON ps_wms.estoque (reserva_id);
CREATE INDEX estoque_fk4 ON ps_wms.estoque (armazem_id);
CREATE INDEX estoque_fk5 ON ps_wms.estoque (programacao_id);
CREATE INDEX estoque_fk6 ON ps_wms.estoque (uma_id);
CREATE INDEX estoque_fk7 ON ps_wms.estoque (origem_id);
CREATE UNIQUE INDEX iii ON ps_wms.estoque (endereco_id,material_id,reserva_id,programacao_id,uma_id,tipo,origem_id);
データの分布を調べる – Mihai
テーブルには何行ありますか? –
テーブル内に348行あります – Fabiano