mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	This extends GiST's support for nearest-neighbor searches to many of the standard data types. Teodor Sigaev
		
			
				
	
	
		
			92 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
-- int8 check
 | 
						|
CREATE TABLE int8tmp (a int8);
 | 
						|
\copy int8tmp from 'data/int8.data'
 | 
						|
SET enable_seqscan=on;
 | 
						|
SELECT count(*) FROM int8tmp WHERE a <  464571291354841;
 | 
						|
 count 
 | 
						|
-------
 | 
						|
   276
 | 
						|
(1 row)
 | 
						|
 | 
						|
SELECT count(*) FROM int8tmp WHERE a <= 464571291354841;
 | 
						|
 count 
 | 
						|
-------
 | 
						|
   277
 | 
						|
(1 row)
 | 
						|
 | 
						|
SELECT count(*) FROM int8tmp WHERE a  = 464571291354841;
 | 
						|
 count 
 | 
						|
-------
 | 
						|
     1
 | 
						|
(1 row)
 | 
						|
 | 
						|
SELECT count(*) FROM int8tmp WHERE a >= 464571291354841;
 | 
						|
 count 
 | 
						|
-------
 | 
						|
   271
 | 
						|
(1 row)
 | 
						|
 | 
						|
SELECT count(*) FROM int8tmp WHERE a >  464571291354841;
 | 
						|
 count 
 | 
						|
-------
 | 
						|
   270
 | 
						|
(1 row)
 | 
						|
 | 
						|
SELECT a, a <-> '464571291354841' FROM int8tmp ORDER BY a <-> '464571291354841' LIMIT 3;
 | 
						|
        a        |    ?column?    
 | 
						|
-----------------+----------------
 | 
						|
 464571291354841 |              0
 | 
						|
 457257666629329 |  7313624725512
 | 
						|
 478227196042750 | 13655904687909
 | 
						|
(3 rows)
 | 
						|
 | 
						|
CREATE INDEX int8idx ON int8tmp USING gist ( a );
 | 
						|
SET enable_seqscan=off;
 | 
						|
SELECT count(*) FROM int8tmp WHERE a <  464571291354841::int8;
 | 
						|
 count 
 | 
						|
-------
 | 
						|
   276
 | 
						|
(1 row)
 | 
						|
 | 
						|
SELECT count(*) FROM int8tmp WHERE a <= 464571291354841::int8;
 | 
						|
 count 
 | 
						|
-------
 | 
						|
   277
 | 
						|
(1 row)
 | 
						|
 | 
						|
SELECT count(*) FROM int8tmp WHERE a  = 464571291354841::int8;
 | 
						|
 count 
 | 
						|
-------
 | 
						|
     1
 | 
						|
(1 row)
 | 
						|
 | 
						|
SELECT count(*) FROM int8tmp WHERE a >= 464571291354841::int8;
 | 
						|
 count 
 | 
						|
-------
 | 
						|
   271
 | 
						|
(1 row)
 | 
						|
 | 
						|
SELECT count(*) FROM int8tmp WHERE a >  464571291354841::int8;
 | 
						|
 count 
 | 
						|
-------
 | 
						|
   270
 | 
						|
(1 row)
 | 
						|
 | 
						|
EXPLAIN (COSTS OFF)
 | 
						|
SELECT a, a <-> '464571291354841' FROM int8tmp ORDER BY a <-> '464571291354841' LIMIT 3;
 | 
						|
                    QUERY PLAN                     
 | 
						|
---------------------------------------------------
 | 
						|
 Limit
 | 
						|
   ->  Index Scan using int8idx on int8tmp
 | 
						|
         Order By: (a <-> 464571291354841::bigint)
 | 
						|
(3 rows)
 | 
						|
 | 
						|
SELECT a, a <-> '464571291354841' FROM int8tmp ORDER BY a <-> '464571291354841' LIMIT 3;
 | 
						|
        a        |    ?column?    
 | 
						|
-----------------+----------------
 | 
						|
 464571291354841 |              0
 | 
						|
 457257666629329 |  7313624725512
 | 
						|
 478227196042750 | 13655904687909
 | 
						|
(3 rows)
 | 
						|
 |