the optimizer and exists
От | Thomas F. O'Connell |
---|---|
Тема | the optimizer and exists |
Дата | |
Msg-id | aklh69$2qt$1@news.hub.org обсуждение исходный текст |
Список | pgsql-hackers |
i think i might've stumbled across a tiny defect in the optimizer. unfortunately, i haven't the knowledge of the code to know where to begin looking at how to address this problem. anyway, consider the following: create table foo(id int2 ); create table bar(id int2foo_id int2 references foo( id ) ); imagine that the tables are populated. now, consider the query select b.foo_id from bar b where b.id = <some id> and exists(select *from foo fwhere b.foo_id = f.idand b.id = <some id, as above> ); now consider the same query with "select <constant>" in place of "select *" in the EXISTS subquery. explain analyze indicates that the constant version always runs a little bit faster. shouldn't the optimizer be able to determine that it isn't necessary actually to read a row in the case of EXISTS? i'm assuming that's where the overhead is coming into play. i realize this is minutiae in comparison to other aspects of development, but it is another small performance boost that could be added since i imagine many people, myself included, find it more natural to throw in "select *" rather than "select <constant>". i didn't see this on the current lists or TODO, but if it's a dupe, i apologize for the noise. i also apologize for not being able to patch it, myself! -tfo
В списке pgsql-hackers по дате отправления: