Hi Ivan,
I tested the patch using the input provided in commands.sql and observed
improvements in both planning and execution time. These optimizations are
especially noticeable when working with a mulitple tables. Even when querying
just a single table, there is a small improvement in planning and execution
time, with differences ranging from 0.02 to 0.04 ms.
CREATE TABLE test_table (
_id SERIAL PRIMARY KEY,
_val TEXT NOT NULL
);
INSERT INTO test_table (_val) VALUES
('a'),
('b'),
('c'),
('d'),
('e');
EXPLAIN ANALYZE
SELECT *
FROM test_table
WHERE _val IN ('b', 'd', 'e');
EXPLAIN ANALYZE
SELECT *
FROM test_table
WHERE _val IN (VALUES ('b'), ('d'), ('e'));
The patch optimizes IN clauses effectively, especially when the syntax uses
VALUES.
When writing queries like:
col IN (VALUES ('a'), ('b'), ('c'))
the optimization makes it behave similarly to:
col IN ('a', 'b', 'c')
This leads to faster query execution times and reduced planning overhead.
Best Regards,
PostgreSQL Contributiors - Newt Global
[cid:55b37106-ab02-4cf9-b703-3cf4294d4600]
Newt Global India Pvt. Ltd.
SSPDL Alpha City , Gamma Block,
25, Rajiv Gandhi Salai (OMR),
Navalur, Chennai - 600130 .