PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

क्या कोई पोस्टग्रेज CLOSEST ऑपरेटर है?

मैं सिंटैक्स पर थोड़ा हटकर हो सकता हूं, लेकिन यह पैरामीटरयुक्त क्वेरी (सभी? मूल प्रश्न का '1' लें) तेजी से चलना चाहिए, मूल रूप से 2 बी-ट्री लुकअप [संख्या अनुक्रमित है]।

SELECT * FROM
(
  (SELECT id, number FROM t WHERE number >= ? ORDER BY number LIMIT 1) AS above
  UNION ALL
  (SELECT id, number FROM t WHERE number < ? ORDER BY number DESC LIMIT 1) as below
) 
ORDER BY abs(?-number) LIMIT 1;

इसके लिए क्वेरी योजना ~5e5 पंक्तियों की तालिका के साथ (number . पर एक अनुक्रमणिका के साथ) ) इस तरह दिखता है:

psql => explain select * from (
        (SELECT id, number FROM t WHERE number >= 1 order by number limit 1) 
        union all
        (select id, number from t where number < 1 order by number desc limit 1)
) as make_postgresql_happy 
order by abs (1 - number) 
limit 1;
                                                  QUERY PLAN
--------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.24..0.24 rows=1 width=12)
   ->  Sort  (cost=0.24..0.24 rows=2 width=12)
         Sort Key: (abs((1::double precision - public.t.number)))
         ->  Result  (cost=0.00..0.23 rows=2 width=12)
               ->  Append  (cost=0.00..0.22 rows=2 width=12)
                     ->  Limit  (cost=0.00..0.06 rows=1 width=12)
                           ->  Index Scan using idx_t on t  (cost=0.00..15046.74 rows=255683 width=12)
                                 Index Cond: (number >= 1::double precision)
                     ->  Limit  (cost=0.00..0.14 rows=1 width=12)
                           ->  Index Scan Backward using idx_t on t  (cost=0.00..9053.67 rows=66136 width=12)
                                 Index Cond: (number < 1::double precision)
(11 rows)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql enum क्या फायदे और नुकसान हैं?

  2. PostgreSQL कनेक्शन पूलिंग:भाग 4 - PgBouncer बनाम Pgpool-II

  3. ~/.psqlrc डीबीए के लिए फ़ाइल

  4. PostgreSQL चयन क्वेरी में कॉलम की अधिकतम संख्या क्या है

  5. टॉक स्लाइड्स:PostgreSQL 11 में विभाजन सुधार