Search Postgresql Archives

Plan rows - 1 or many

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I have an application where I would really like to be able to look at en SQL query and answer the question:

"Is this query capable of returning more than 1 row?"

So basically, queries are divided into 2 categories. Those that look up a single row (if it exists) and those who return a (possible empty) set of rows. (which could also be a set of 1 due to current database content.)

Example:
It's obvious to see that this query can never return more than one row, no matter what's in the DB:
SELECT * FROM mytable WHERE uniquecolumn = 17;

But only because we know the column has a unique constraint.
Now, unique constraints might be more complex. It could be composite (A,B) where A is a foreign key to another table (Ta) where we can determine that both row referenced by A is unique wrt. the query, so filtering on B and a unique column in Ta would still only ever result in 1 row.

SELECT * FROM Ta,Tb WHERE Ta.id = Tb.A AND Tb.B = 17 AND Ta.uniquecolumn = 42;

This seems to be about the same as the query planners "plan_rows" try to do. I'm aware that plan_rows is only an estimate and can't answer the question of exactly how many rows in general a query returns, but the question is whether it can be trusted to answer the above more narrow question?

I tried look at the source, but could quite figure out if plan_rows were intended to be strict about when it concluded that there was only one row. (like when it evaluated a GROUP BY with only 1 aggregate).

Can I conclude that when plan_rows is 1 then there will never be more than 1 row returned by the query?

/Peter



--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux