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

पोस्टग्रेज पर धीमी गति से अलग क्वेरी का चयन करें

BEGIN; 
CREATE TABLE dist ( x INTEGER NOT NULL ); 
INSERT INTO dist SELECT random()*50 FROM generate_series( 1, 5000000 ); 
COMMIT;
CREATE INDEX dist_x ON dist(x);


VACUUM ANALYZE dist;
EXPLAIN ANALYZE SELECT DISTINCT x FROM dist;

HashAggregate  (cost=84624.00..84624.51 rows=51 width=4) (actual time=1840.141..1840.153 rows=51 loops=1)
   ->  Seq Scan on dist  (cost=0.00..72124.00 rows=5000000 width=4) (actual time=0.003..573.819 rows=5000000 loops=1)
 Total runtime: 1848.060 ms

पीजी (अभी तक) अलग (समान मूल्यों को छोड़कर) के लिए एक इंडेक्स का उपयोग नहीं कर सकता है, लेकिन आप यह कर सकते हैं:

CREATE OR REPLACE FUNCTION distinct_skip_foo()
RETURNS SETOF INTEGER
LANGUAGE plpgsql STABLE 
AS $$
DECLARE
    _x  INTEGER;
BEGIN
    _x := min(x) FROM dist;
    WHILE _x IS NOT NULL LOOP
        RETURN NEXT _x;
        _x := min(x) FROM dist WHERE x > _x;
    END LOOP;
END;
$$ ;

EXPLAIN ANALYZE SELECT * FROM distinct_skip_foo();
Function Scan on distinct_skip_foo  (cost=0.00..260.00 rows=1000 width=4) (actual time=1.629..1.635 rows=51 loops=1)
 Total runtime: 1.652 ms


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symfony2 सिद्धांत - PostgreSQL के लिए ILIKE खंड?

  2. Postgresql डेटाबेस द्वारा उपयोग किए जाने वाले कुल डिस्क स्थान का पता लगाता है

  3. PostgreSQL स्थापित करने के लिए बैश स्क्रिप्ट - काम नहीं कर रहा

  4. आयात त्रुटि क्या है:प्रतीक नहीं मिला:_PQencryptPasswordConn का अर्थ है और मैं इसे कैसे ठीक करूं?

  5. PostgreSQL प्रदर्शन - चुनें बनाम संग्रहीत कार्य