Re: Optimize join selectivity estimation by not reading MCV stats for unique join attributes
David Geier <geidav.pg@gmail.com>
From: David Geier <geidav.pg@gmail.com>
To: Tomas Vondra <tomas.vondra@enterprisedb.com>, Tom Lane
<tgl@sss.pgh.pa.us>, Richard Guo <guofenglinux@gmail.com>
Cc: PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2022-11-18T15:59:02Z
Lists: pgsql-hackers
Attachments
- 0001-Dont-read-MCV-stats-needlessly-in-join-selectivity-estimation-v3.patch (text/x-patch) patch v3-0001
On 11/18/22 14:00, Tomas Vondra wrote: > Seems fine. I wonder if we could/could introduce a new constant for 0, > similar to ATTSTATSSLOT_NUMBERS/ATTSTATSSLOT_VALUES, instead of using a > magic constant. Say, ATTSTATSSLOT_NONE or ATTSTATSSLOT_CHECK. Good idea. I called it ATTSTATSSLOT_EXISTS. New patch attached. > I don't think you can write a test for this, because there is no change > to behavior that can be observed by the user. If one side has no MCV, > the only difference is whether we try to load the other MCV or not. Yeah. I thought along the lines of checking the number of pages read when the pg_stats entry is not in syscache yet. But that seems awfully implementation specific. So no test provided. -- David Geier (ServiceNow)
Commits
-
Don't read MCV stats needlessly in eqjoinsel().
- f84ff0c6d4eb 16.0 landed