Обсуждение: [HACKERS] pg_stat_statements query normalization, and the 'in' operator
[HACKERS] pg_stat_statements query normalization, and the 'in' operator
От
unixway.drive@gmail.com
Дата:
Hello there, Given the following list of queries: create table foo (id serial, bar integer); select * from foo where id in (1); select * from foo where id in (2,3); select* from foo where id in (1,3,5); select * from foo where id in (select id from foo); would it be possible to have first three select queries to be normalized into a single one so that 'select query from pg_stat_statements' returns something like: select * from foo where id in (...); select * from foo where id in (select id from foo); (2 rows) instead of: select * from foo where id in (?,?); select * from foo where id in (?,?,?); select * from foo where id in (?); select* from foo where id in (select id from foo); (4 rows) ?
unixway.drive@gmail.com writes:
> Given the following list of queries:
> create table foo (id serial, bar integer);
> select * from foo where id in (1);
> select * from foo where id in (2,3);
> select * from foo where id in (1,3,5);
> select * from foo where id in (select id from foo);
> would it be possible to have first three select queries to be normalized
> into a single one so that 'select query from pg_stat_statements' returns
> something like:
> select * from foo where id in (...);
> select * from foo where id in (select id from foo);
Wouldn't recommend holding your breath for that. But you could do the
same conversion on the client side that the parser would do anyway:
select * from foo where id = any ('{1,3,5}'::integer[]);
regards, tom lane