私は2つのテーブルを持っています:
CREATE TABLE soils (
sample_id TEXT PRIMARY KEY,
project_id TEXT,
technician_id TEXT
);
CREATE INDEX soils_idx
ON soils
USING btree
(sample_id COLLATE pg_catalog."default");
CREATE TABLE assays (
sample_id TEXT PRIMARY KEY,
mo_ppm NUMERIC
);
CREATE INDEX assays_idx
ON assays
USING btree
(sample_id COLLATE pg_catalog."default");
各テーブルには、約50万のレコードが含まれ、実際には、タイプTEXTの各約20の追加列が含まれています(ここで時間を節約するために、上記のDDLでは省略されています)。
クエリを実行すると:
EXPLAIN SELECT
s.sample_id, s.project_id, s.technician_id, a.mo_ppm
FROM
soils AS s INNER JOIN assays AS a ON s.sample_id = a.sample_id
インデックスへのルックアップではなく、2つのSEQSCANを取得します。それは期待される動作ですか?