mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
Use the term "radix tree" instead of "suffix tree" for SP-GiST text opclass.
What we have implemented is a radix tree (or a radix trie or a patricia trie), but the docs and code comments incorrectly called it a "suffix tree". Alexander Korotkov
This commit is contained in:
parent
20c00ca668
commit
cb953d8b1b
@ -267,7 +267,7 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10;
|
|||||||
SP-GiST indexes, like GiST indexes, offer an infrastructure that supports
|
SP-GiST indexes, like GiST indexes, offer an infrastructure that supports
|
||||||
various kinds of searches. SP-GiST permits implementation of a wide range
|
various kinds of searches. SP-GiST permits implementation of a wide range
|
||||||
of different non-balanced disk-based data structures, such as quadtrees,
|
of different non-balanced disk-based data structures, such as quadtrees,
|
||||||
k-d trees, and suffix trees (tries). As an example, the standard distribution of
|
k-d trees, and radix trees (tries). As an example, the standard distribution of
|
||||||
<productname>PostgreSQL</productname> includes SP-GiST operator classes
|
<productname>PostgreSQL</productname> includes SP-GiST operator classes
|
||||||
for two-dimensional points, which support indexed
|
for two-dimensional points, which support indexed
|
||||||
queries using these operators:
|
queries using these operators:
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<acronym>SP-GiST</acronym> is an abbreviation for space-partitioned
|
<acronym>SP-GiST</acronym> is an abbreviation for space-partitioned
|
||||||
<acronym>GiST</acronym>. <acronym>SP-GiST</acronym> supports partitioned
|
<acronym>GiST</acronym>. <acronym>SP-GiST</acronym> supports partitioned
|
||||||
search trees, which facilitate development of a wide range of different
|
search trees, which facilitate development of a wide range of different
|
||||||
non-balanced data structures, such as quad-trees, k-d trees, and suffix
|
non-balanced data structures, such as quad-trees, k-d trees, and radix
|
||||||
trees (tries). The common feature of these structures is that they
|
trees (tries). The common feature of these structures is that they
|
||||||
repeatedly divide the search space into partitions that need not be
|
repeatedly divide the search space into partitions that need not be
|
||||||
of equal size. Searches that are well matched to the partitioning rule
|
of equal size. Searches that are well matched to the partitioning rule
|
||||||
@ -81,9 +81,9 @@
|
|||||||
A node contains a downlink that leads to either another, lower-level inner
|
A node contains a downlink that leads to either another, lower-level inner
|
||||||
tuple, or a short list of leaf tuples that all lie on the same index page.
|
tuple, or a short list of leaf tuples that all lie on the same index page.
|
||||||
Each node has a <firstterm>label</> that describes it; for example,
|
Each node has a <firstterm>label</> that describes it; for example,
|
||||||
in a suffix tree the node label could be the next character of the string
|
in a radix tree the node label could be the next character of the string
|
||||||
value. Optionally, an inner tuple can have a <firstterm>prefix</> value
|
value. Optionally, an inner tuple can have a <firstterm>prefix</> value
|
||||||
that describes all its members. In a suffix tree this could be the common
|
that describes all its members. In a radix tree this could be the common
|
||||||
prefix of the represented strings. The prefix value is not necessarily
|
prefix of the represented strings. The prefix value is not necessarily
|
||||||
really a prefix, but can be any data needed by the operator class;
|
really a prefix, but can be any data needed by the operator class;
|
||||||
for example, in a quad-tree it can store the central point that the four
|
for example, in a quad-tree it can store the central point that the four
|
||||||
@ -636,7 +636,7 @@ typedef struct spgLeafConsistentOut
|
|||||||
<para>
|
<para>
|
||||||
Individual leaf tuples and inner tuples must fit on a single index page
|
Individual leaf tuples and inner tuples must fit on a single index page
|
||||||
(8KB by default). Therefore, when indexing values of variable-length
|
(8KB by default). Therefore, when indexing values of variable-length
|
||||||
data types, long values can only be supported by methods such as suffix
|
data types, long values can only be supported by methods such as radix
|
||||||
trees, in which each level of the tree includes a prefix that is short
|
trees, in which each level of the tree includes a prefix that is short
|
||||||
enough to fit on a page, and the final leaf level includes a suffix also
|
enough to fit on a page, and the final leaf level includes a suffix also
|
||||||
short enough to fit on a page. The operator class should set
|
short enough to fit on a page. The operator class should set
|
||||||
@ -740,7 +740,7 @@ typedef struct spgLeafConsistentOut
|
|||||||
<para>
|
<para>
|
||||||
The <productname>PostgreSQL</productname> source distribution includes
|
The <productname>PostgreSQL</productname> source distribution includes
|
||||||
several examples of index operator classes for
|
several examples of index operator classes for
|
||||||
<acronym>SP-GiST</acronym>. The core system currently provides suffix
|
<acronym>SP-GiST</acronym>. The core system currently provides radix
|
||||||
trees over text columns and two types of trees over points: quad-tree and
|
trees over text columns and two types of trees over points: quad-tree and
|
||||||
k-d tree. Look into <filename>src/backend/access/spgist/</> to see the
|
k-d tree. Look into <filename>src/backend/access/spgist/</> to see the
|
||||||
code.
|
code.
|
||||||
|
@ -2,7 +2,7 @@ src/backend/access/spgist/README
|
|||||||
|
|
||||||
SP-GiST is an abbreviation of space-partitioned GiST. It provides a
|
SP-GiST is an abbreviation of space-partitioned GiST. It provides a
|
||||||
generalized infrastructure for implementing space-partitioned data
|
generalized infrastructure for implementing space-partitioned data
|
||||||
structures, such as quadtrees, k-d trees, and suffix trees (tries). When
|
structures, such as quadtrees, k-d trees, and radix trees (tries). When
|
||||||
implemented in main memory, these structures are usually designed as a set of
|
implemented in main memory, these structures are usually designed as a set of
|
||||||
dynamically-allocated nodes linked by pointers. This is not suitable for
|
dynamically-allocated nodes linked by pointers. This is not suitable for
|
||||||
direct storing on disk, since the chains of pointers can be rather long and
|
direct storing on disk, since the chains of pointers can be rather long and
|
||||||
@ -56,18 +56,18 @@ Inner tuple consists of:
|
|||||||
|
|
||||||
optional prefix value - all successors must be consistent with it.
|
optional prefix value - all successors must be consistent with it.
|
||||||
Example:
|
Example:
|
||||||
suffix tree - prefix value is a common prefix string
|
radix tree - prefix value is a common prefix string
|
||||||
quad tree - centroid
|
quad tree - centroid
|
||||||
k-d tree - one coordinate
|
k-d tree - one coordinate
|
||||||
|
|
||||||
list of nodes, where node is a (label, pointer) pair.
|
list of nodes, where node is a (label, pointer) pair.
|
||||||
Example of a label: a single character for suffix tree
|
Example of a label: a single character for radix tree
|
||||||
|
|
||||||
Leaf tuple consists of:
|
Leaf tuple consists of:
|
||||||
|
|
||||||
a leaf value
|
a leaf value
|
||||||
Example:
|
Example:
|
||||||
suffix tree - the rest of string (postfix)
|
radix tree - the rest of string (postfix)
|
||||||
quad and k-d tree - the point itself
|
quad and k-d tree - the point itself
|
||||||
|
|
||||||
ItemPointer to the heap
|
ItemPointer to the heap
|
||||||
@ -122,7 +122,7 @@ space is as good as we can easily make it.
|
|||||||
(2) Current implementation allows to do picksplit and insert a new leaf tuple
|
(2) Current implementation allows to do picksplit and insert a new leaf tuple
|
||||||
in one operation, if the new list of leaf tuples fits on one page. It's
|
in one operation, if the new list of leaf tuples fits on one page. It's
|
||||||
always possible for trees with small nodes like quad tree or k-d tree, but
|
always possible for trees with small nodes like quad tree or k-d tree, but
|
||||||
suffix trees may require another picksplit.
|
radix trees may require another picksplit.
|
||||||
|
|
||||||
(3) Addition of node must keep size of inner tuple small enough to fit on a
|
(3) Addition of node must keep size of inner tuple small enough to fit on a
|
||||||
page. After addition, inner tuple could become too large to be stored on
|
page. After addition, inner tuple could become too large to be stored on
|
||||||
@ -132,14 +132,14 @@ another page, we can't change the numbers of other tuples on the page, else
|
|||||||
we'd make downlink pointers to them invalid. To prevent that, SP-GiST leaves
|
we'd make downlink pointers to them invalid. To prevent that, SP-GiST leaves
|
||||||
a "placeholder" tuple, which can be reused later whenever another tuple is
|
a "placeholder" tuple, which can be reused later whenever another tuple is
|
||||||
added to the page. See also Concurrency and Vacuum sections below. Right now
|
added to the page. See also Concurrency and Vacuum sections below. Right now
|
||||||
only suffix trees could add a node to the tuple; quad trees and k-d trees
|
only radix trees could add a node to the tuple; quad trees and k-d trees
|
||||||
make all possible nodes at once in PickSplitFn() call.
|
make all possible nodes at once in PickSplitFn() call.
|
||||||
|
|
||||||
(4) Prefix value could only partially match a new value, so the SplitTuple
|
(4) Prefix value could only partially match a new value, so the SplitTuple
|
||||||
action allows breaking the current tree branch into upper and lower sections.
|
action allows breaking the current tree branch into upper and lower sections.
|
||||||
Another way to say it is that we can split the current inner tuple into
|
Another way to say it is that we can split the current inner tuple into
|
||||||
"prefix" and "postfix" parts, where the prefix part is able to match the
|
"prefix" and "postfix" parts, where the prefix part is able to match the
|
||||||
incoming new value. Consider example of insertion into a suffix tree. We use
|
incoming new value. Consider example of insertion into a radix tree. We use
|
||||||
the following notation, where tuple's id is just for discussion (no such id
|
the following notation, where tuple's id is just for discussion (no such id
|
||||||
is actually stored):
|
is actually stored):
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* spgtextproc.c
|
* spgtextproc.c
|
||||||
* implementation of compressed-suffix tree over text
|
* implementation of radix tree (compressed trie) over text
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group
|
||||||
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In the worst case, a inner tuple in a text suffix tree could have as many
|
* In the worst case, a inner tuple in a text radix tree could have as many
|
||||||
* as 256 nodes (one for each possible byte value). Each node can take 16
|
* as 256 nodes (one for each possible byte value). Each node can take 16
|
||||||
* bytes on MAXALIGN=8 machines. The inner tuple must fit on an index page
|
* bytes on MAXALIGN=8 machines. The inner tuple must fit on an index page
|
||||||
* of size BLCKSZ. Rather than assuming we know the exact amount of overhead
|
* of size BLCKSZ. Rather than assuming we know the exact amount of overhead
|
||||||
|
@ -4700,15 +4700,15 @@ DATA(insert OID = 4026 ( spg_kd_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f f
|
|||||||
DESCR("SP-GiST support for k-d tree over point");
|
DESCR("SP-GiST support for k-d tree over point");
|
||||||
|
|
||||||
DATA(insert OID = 4027 ( spg_text_config PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_config _null_ _null_ _null_ ));
|
DATA(insert OID = 4027 ( spg_text_config PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_config _null_ _null_ _null_ ));
|
||||||
DESCR("SP-GiST support for suffix tree over text");
|
DESCR("SP-GiST support for radix tree over text");
|
||||||
DATA(insert OID = 4028 ( spg_text_choose PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_choose _null_ _null_ _null_ ));
|
DATA(insert OID = 4028 ( spg_text_choose PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_choose _null_ _null_ _null_ ));
|
||||||
DESCR("SP-GiST support for suffix tree over text");
|
DESCR("SP-GiST support for radix tree over text");
|
||||||
DATA(insert OID = 4029 ( spg_text_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_picksplit _null_ _null_ _null_ ));
|
DATA(insert OID = 4029 ( spg_text_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_picksplit _null_ _null_ _null_ ));
|
||||||
DESCR("SP-GiST support for suffix tree over text");
|
DESCR("SP-GiST support for radix tree over text");
|
||||||
DATA(insert OID = 4030 ( spg_text_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_inner_consistent _null_ _null_ _null_ ));
|
DATA(insert OID = 4030 ( spg_text_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_inner_consistent _null_ _null_ _null_ ));
|
||||||
DESCR("SP-GiST support for suffix tree over text");
|
DESCR("SP-GiST support for radix tree over text");
|
||||||
DATA(insert OID = 4031 ( spg_text_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ spg_text_leaf_consistent _null_ _null_ _null_ ));
|
DATA(insert OID = 4031 ( spg_text_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ spg_text_leaf_consistent _null_ _null_ _null_ ));
|
||||||
DESCR("SP-GiST support for suffix tree over text");
|
DESCR("SP-GiST support for radix tree over text");
|
||||||
|
|
||||||
DATA(insert OID = 3469 ( spg_range_quad_config PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_range_quad_config _null_ _null_ _null_ ));
|
DATA(insert OID = 3469 ( spg_range_quad_config PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_range_quad_config _null_ _null_ _null_ ));
|
||||||
DESCR("SP-GiST support for quad tree over range");
|
DESCR("SP-GiST support for quad tree over range");
|
||||||
|
@ -72,13 +72,13 @@ INSERT INTO quad_point_tbl VALUES (NULL), (NULL), (NULL);
|
|||||||
CREATE INDEX sp_quad_ind ON quad_point_tbl USING spgist (p);
|
CREATE INDEX sp_quad_ind ON quad_point_tbl USING spgist (p);
|
||||||
CREATE TABLE kd_point_tbl AS SELECT * FROM quad_point_tbl;
|
CREATE TABLE kd_point_tbl AS SELECT * FROM quad_point_tbl;
|
||||||
CREATE INDEX sp_kd_ind ON kd_point_tbl USING spgist (p kd_point_ops);
|
CREATE INDEX sp_kd_ind ON kd_point_tbl USING spgist (p kd_point_ops);
|
||||||
CREATE TABLE suffix_text_tbl AS
|
CREATE TABLE radix_text_tbl AS
|
||||||
SELECT name AS t FROM road WHERE name !~ '^[0-9]';
|
SELECT name AS t FROM road WHERE name !~ '^[0-9]';
|
||||||
INSERT INTO suffix_text_tbl
|
INSERT INTO radix_text_tbl
|
||||||
SELECT 'P0123456789abcdef' FROM generate_series(1,1000);
|
SELECT 'P0123456789abcdef' FROM generate_series(1,1000);
|
||||||
INSERT INTO suffix_text_tbl VALUES ('P0123456789abcde');
|
INSERT INTO radix_text_tbl VALUES ('P0123456789abcde');
|
||||||
INSERT INTO suffix_text_tbl VALUES ('P0123456789abcdefF');
|
INSERT INTO radix_text_tbl VALUES ('P0123456789abcdefF');
|
||||||
CREATE INDEX sp_suff_ind ON suffix_text_tbl USING spgist (t);
|
CREATE INDEX sp_radix_ind ON radix_text_tbl USING spgist (t);
|
||||||
--
|
--
|
||||||
-- Test GiST and SP-GiST indexes
|
-- Test GiST and SP-GiST indexes
|
||||||
--
|
--
|
||||||
@ -288,79 +288,79 @@ SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)';
|
|||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1000
|
1000
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
272
|
272
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
272
|
272
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
273
|
273
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
273
|
273
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
2
|
2
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
50
|
50
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
50
|
50
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
48
|
48
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
48
|
48
|
||||||
@ -952,195 +952,195 @@ SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
|
|||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
------------------------------------------------------------
|
------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t = 'P0123456789abcdef'::text)
|
Index Cond: (t = 'P0123456789abcdef'::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1000
|
1000
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
------------------------------------------------------------
|
------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t = 'P0123456789abcde'::text)
|
Index Cond: (t = 'P0123456789abcde'::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
------------------------------------------------------------
|
------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t = 'P0123456789abcdefF'::text)
|
Index Cond: (t = 'P0123456789abcdefF'::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t < 'Aztec Ct '::text)
|
Index Cond: (t < 'Aztec Ct '::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
272
|
272
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t ~<~ 'Aztec Ct '::text)
|
Index Cond: (t ~<~ 'Aztec Ct '::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
272
|
272
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t <= 'Aztec Ct '::text)
|
Index Cond: (t <= 'Aztec Ct '::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
273
|
273
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t ~<=~ 'Aztec Ct '::text)
|
Index Cond: (t ~<=~ 'Aztec Ct '::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
273
|
273
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t = 'Aztec Ct '::text)
|
Index Cond: (t = 'Aztec Ct '::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t = 'Worth St '::text)
|
Index Cond: (t = 'Worth St '::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
2
|
2
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t >= 'Worth St '::text)
|
Index Cond: (t >= 'Worth St '::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
50
|
50
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t ~>=~ 'Worth St '::text)
|
Index Cond: (t ~>=~ 'Worth St '::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
50
|
50
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t > 'Worth St '::text)
|
Index Cond: (t > 'Worth St '::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
48
|
48
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Index Only Scan using sp_suff_ind on suffix_text_tbl
|
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||||
Index Cond: (t ~>~ 'Worth St '::text)
|
Index Cond: (t ~>~ 'Worth St '::text)
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
48
|
48
|
||||||
@ -1459,221 +1459,221 @@ SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
|
|||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t = 'P0123456789abcdef'::text)
|
Recheck Cond: (t = 'P0123456789abcdef'::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t = 'P0123456789abcdef'::text)
|
Index Cond: (t = 'P0123456789abcdef'::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1000
|
1000
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t = 'P0123456789abcde'::text)
|
Recheck Cond: (t = 'P0123456789abcde'::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t = 'P0123456789abcde'::text)
|
Index Cond: (t = 'P0123456789abcde'::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
------------------------------------------------------------
|
------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t = 'P0123456789abcdefF'::text)
|
Recheck Cond: (t = 'P0123456789abcdefF'::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t = 'P0123456789abcdefF'::text)
|
Index Cond: (t = 'P0123456789abcdefF'::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t < 'Aztec Ct '::text)
|
Recheck Cond: (t < 'Aztec Ct '::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t < 'Aztec Ct '::text)
|
Index Cond: (t < 'Aztec Ct '::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
272
|
272
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t ~<~ 'Aztec Ct '::text)
|
Recheck Cond: (t ~<~ 'Aztec Ct '::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t ~<~ 'Aztec Ct '::text)
|
Index Cond: (t ~<~ 'Aztec Ct '::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
272
|
272
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t <= 'Aztec Ct '::text)
|
Recheck Cond: (t <= 'Aztec Ct '::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t <= 'Aztec Ct '::text)
|
Index Cond: (t <= 'Aztec Ct '::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
273
|
273
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t ~<=~ 'Aztec Ct '::text)
|
Recheck Cond: (t ~<=~ 'Aztec Ct '::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t ~<=~ 'Aztec Ct '::text)
|
Index Cond: (t ~<=~ 'Aztec Ct '::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
273
|
273
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t = 'Aztec Ct '::text)
|
Recheck Cond: (t = 'Aztec Ct '::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t = 'Aztec Ct '::text)
|
Index Cond: (t = 'Aztec Ct '::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t = 'Worth St '::text)
|
Recheck Cond: (t = 'Worth St '::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t = 'Worth St '::text)
|
Index Cond: (t = 'Worth St '::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
2
|
2
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t >= 'Worth St '::text)
|
Recheck Cond: (t >= 'Worth St '::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t >= 'Worth St '::text)
|
Index Cond: (t >= 'Worth St '::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
50
|
50
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t ~>=~ 'Worth St '::text)
|
Recheck Cond: (t ~>=~ 'Worth St '::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t ~>=~ 'Worth St '::text)
|
Index Cond: (t ~>=~ 'Worth St '::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
50
|
50
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t > 'Worth St '::text)
|
Recheck Cond: (t > 'Worth St '::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t > 'Worth St '::text)
|
Index Cond: (t > 'Worth St '::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
48
|
48
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St ';
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
Aggregate
|
Aggregate
|
||||||
-> Bitmap Heap Scan on suffix_text_tbl
|
-> Bitmap Heap Scan on radix_text_tbl
|
||||||
Recheck Cond: (t ~>~ 'Worth St '::text)
|
Recheck Cond: (t ~>~ 'Worth St '::text)
|
||||||
-> Bitmap Index Scan on sp_suff_ind
|
-> Bitmap Index Scan on sp_radix_ind
|
||||||
Index Cond: (t ~>~ 'Worth St '::text)
|
Index Cond: (t ~>~ 'Worth St '::text)
|
||||||
(5 rows)
|
(5 rows)
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St ';
|
||||||
count
|
count
|
||||||
-------
|
-------
|
||||||
48
|
48
|
||||||
|
@ -137,6 +137,7 @@ SELECT relname, relhasindex
|
|||||||
point_tbl | t
|
point_tbl | t
|
||||||
polygon_tbl | t
|
polygon_tbl | t
|
||||||
quad_point_tbl | t
|
quad_point_tbl | t
|
||||||
|
radix_text_tbl | t
|
||||||
ramp | f
|
ramp | f
|
||||||
real_city | f
|
real_city | f
|
||||||
reltime_tbl | f
|
reltime_tbl | f
|
||||||
@ -152,7 +153,6 @@ SELECT relname, relhasindex
|
|||||||
sql_sizing_profiles | f
|
sql_sizing_profiles | f
|
||||||
stud_emp | f
|
stud_emp | f
|
||||||
student | f
|
student | f
|
||||||
suffix_text_tbl | t
|
|
||||||
tenk1 | t
|
tenk1 | t
|
||||||
tenk2 | t
|
tenk2 | t
|
||||||
test_range_excl | t
|
test_range_excl | t
|
||||||
|
@ -660,6 +660,7 @@ SELECT user_relns() AS user_relns
|
|||||||
point_tbl
|
point_tbl
|
||||||
polygon_tbl
|
polygon_tbl
|
||||||
quad_point_tbl
|
quad_point_tbl
|
||||||
|
radix_text_tbl
|
||||||
ramp
|
ramp
|
||||||
random_tbl
|
random_tbl
|
||||||
real_city
|
real_city
|
||||||
@ -671,7 +672,6 @@ SELECT user_relns() AS user_relns
|
|||||||
stud_emp
|
stud_emp
|
||||||
student
|
student
|
||||||
subselect_tbl
|
subselect_tbl
|
||||||
suffix_text_tbl
|
|
||||||
t
|
t
|
||||||
tenk1
|
tenk1
|
||||||
tenk2
|
tenk2
|
||||||
|
@ -110,15 +110,15 @@ CREATE TABLE kd_point_tbl AS SELECT * FROM quad_point_tbl;
|
|||||||
|
|
||||||
CREATE INDEX sp_kd_ind ON kd_point_tbl USING spgist (p kd_point_ops);
|
CREATE INDEX sp_kd_ind ON kd_point_tbl USING spgist (p kd_point_ops);
|
||||||
|
|
||||||
CREATE TABLE suffix_text_tbl AS
|
CREATE TABLE radix_text_tbl AS
|
||||||
SELECT name AS t FROM road WHERE name !~ '^[0-9]';
|
SELECT name AS t FROM road WHERE name !~ '^[0-9]';
|
||||||
|
|
||||||
INSERT INTO suffix_text_tbl
|
INSERT INTO radix_text_tbl
|
||||||
SELECT 'P0123456789abcdef' FROM generate_series(1,1000);
|
SELECT 'P0123456789abcdef' FROM generate_series(1,1000);
|
||||||
INSERT INTO suffix_text_tbl VALUES ('P0123456789abcde');
|
INSERT INTO radix_text_tbl VALUES ('P0123456789abcde');
|
||||||
INSERT INTO suffix_text_tbl VALUES ('P0123456789abcdefF');
|
INSERT INTO radix_text_tbl VALUES ('P0123456789abcdefF');
|
||||||
|
|
||||||
CREATE INDEX sp_suff_ind ON suffix_text_tbl USING spgist (t);
|
CREATE INDEX sp_radix_ind ON radix_text_tbl USING spgist (t);
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Test GiST and SP-GiST indexes
|
-- Test GiST and SP-GiST indexes
|
||||||
@ -194,31 +194,31 @@ SELECT count(*) FROM quad_point_tbl WHERE p >^ '(5000, 4000)';
|
|||||||
|
|
||||||
SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)';
|
SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct ';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct ';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct ';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St ';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St ';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St ';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St ';
|
||||||
|
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St ';
|
||||||
|
|
||||||
-- Now check the results from plain indexscan
|
-- Now check the results from plain indexscan
|
||||||
SET enable_seqscan = OFF;
|
SET enable_seqscan = OFF;
|
||||||
@ -382,56 +382,56 @@ SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
|
|||||||
SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
|
SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St ';
|
||||||
|
|
||||||
-- Now check the results from bitmap indexscan
|
-- Now check the results from bitmap indexscan
|
||||||
SET enable_seqscan = OFF;
|
SET enable_seqscan = OFF;
|
||||||
@ -511,56 +511,56 @@ SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
|
|||||||
SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
|
SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St ';
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St ';
|
||||||
SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St ';
|
SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St ';
|
||||||
|
|
||||||
RESET enable_seqscan;
|
RESET enable_seqscan;
|
||||||
RESET enable_indexscan;
|
RESET enable_indexscan;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user