mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
Advance multiple array keys rightmost-first instead of leftmost-first
during a bitmap index scan. This cannot affect the query results (since we're just dumping the TIDs into a bitmap) but it might offer some advantage in locality of access to the index. Per Greg Stark.
This commit is contained in:
parent
a2f1827dfd
commit
8e850b9159
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/executor/nodeIndexscan.c,v 1.125 2008/01/01 19:45:49 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/executor/nodeIndexscan.c,v 1.126 2008/03/18 03:54:52 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -352,7 +352,13 @@ ExecIndexAdvanceArrayKeys(IndexArrayKeyInfo *arrayKeys, int numArrayKeys)
|
||||
bool found = false;
|
||||
int j;
|
||||
|
||||
for (j = 0; j < numArrayKeys; j++)
|
||||
/*
|
||||
* Note we advance the rightmost array key most quickly, since it will
|
||||
* correspond to the lowest-order index column among the available
|
||||
* qualifications. This is hypothesized to result in better locality
|
||||
* of access in the index.
|
||||
*/
|
||||
for (j = numArrayKeys - 1; j >= 0; j--)
|
||||
{
|
||||
ScanKey scan_key = arrayKeys[j].scan_key;
|
||||
int next_elem = arrayKeys[j].next_elem;
|
||||
|
Loading…
Reference in New Issue
Block a user