हालांकि Postgres में अभी तक कोई इंडेक्स स्किप स्कैन नहीं है, इसका अनुकरण करें:
WITH RECURSIVE cte AS (
( -- parentheses required
SELECT product_id
FROM tickers
ORDER BY 1
LIMIT 1
)
UNION ALL
SELECT l.*
FROM cte c
CROSS JOIN LATERAL (
SELECT product_id
FROM tickers t
WHERE t.product_id > c.product_id -- lateral reference
ORDER BY 1
LIMIT 1
) l
)
TABLE cte;
(product_id)
. पर एक इंडेक्स के साथ और तालिका में केवल 40 अद्वितीय उत्पाद आईडी यह तेज़ होना चाहिए . पूंजी के साथ F .
पीके इंडेक्स (product_id, trade_id)
. पर इसके लिए भी अच्छा है!
प्रति product_id
. में बहुत कम पंक्तियों के साथ (आपके डेटा वितरण के विपरीत), DISTINCT
/ DISTINCT ON
उतना ही तेज़ या तेज़ होगा।
इंडेक्स स्किप स्कैन को लागू करने का काम जारी है।
देखें:
- समूह द्वारा प्रत्येक समूह में पहली पंक्ति का चयन करें?
- प्रति उपयोगकर्ता नवीनतम पंक्ति पुनर्प्राप्त करने के लिए क्वेरी द्वारा GROUP को अनुकूलित करें
- क्या पहले फ़ील्ड पर प्रश्नों के लिए एक समग्र अनुक्रमणिका भी अच्छी है?