我有兩個表:這個PostgreSQL查詢應該使用索引嗎?
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");
每個表包含大約一個半萬條記錄,而在現實中,每約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次序列掃描,而不是查找到索引中。那是預期的行爲?