Cảm ơn ý kiến của bạn, nếu chúng tôi thêm một chỉ mục như
CREATE INDEX t3_t1_nr ON t3(t1_nr);
câu lệnh "BAD" sẽ cải thiện một chút.
Nhưng giải pháp cuối cùng cho chúng tôi là tăng số liệu thống kê thu thập được cho các bảng này:
ALTER TABLE t1 ALTER COLUMN t1_nr SET STATISTICS 10000;
ALTER TABLE t2 ALTER COLUMN t2_nr SET STATISTICS 10000;
ALTER TABLE t3 ALTER COLUMN t1_nr SET STATISTICS 10000;
ANALYZE t1;
ANALYZE t2;
ANALYZE t3;
Sau thay đổi này, cả hai SELECT đều có cùng thời gian loại bỏ. Bạn có thể tìm thêm thông tin tại đây: https://www.postgresql.org/docs/12/planner-stats.html