mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +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)
 | |
| 
 |