बेहतर क्वेरी लिखना

Redshift परिचय

Jason Myers

Principal Engineer

कॉलम सीमित करें

  • SELECT * से बचें
  • जिन कॉलमों की ज़रूरत नहीं है, उन्हें न चुनें
    • याद रखें, Redshift कॉलमनर है और कॉलम के हिसाब से डेटा खींचता है
Redshift परिचय

DISTKEY और SORTKEYs का उपयोग करें

जहाँ संभव हो, इन क्लॉज़ में उपयोग करें

  • JOIN
  • WHERE
  • GROUP BY

 

ORDER BY में क्रम से SORTKEYs उपयोग करें

  • बहुत अनुकूलित sortkey_1, sortkey_2, sortkey_3
  • कम अनुकूलित sort_key_1, sort_key_3

डिस्ट्रिब्यूटेड क्वेरी

Redshift परिचय

बेहतर प्रेडिकेट बनाएँ

  • DISTKEY और SORTKEY का उपयोग करें
  • टेबल जॉइन के करीब रखें
  • इनमें फंक्शन का उपयोग करने से बचें
SELECT receipts.cookie_id, 
       sum(receipts.total)
FROM receipts
JOIN cookies ON receipts.cookie_id = cookies.cookie_id
  -- Keep cookies predicates in the join to push down to nodes holding the records for cookies
 AND cookies.available_on < '2023-11-14'
 AND cookies.end_of_sale IS null
-- Predicates that are not part of the join or on the joined table stay in the WHERE clause
WHERE receipts.order_time > '2023-11-13'
GROUP BY 1 ORDER BY 1;
Redshift परिचय

कॉलम क्रम में स्थिर रहें

जब उपयोग करें:

  • GROUP BY
  • ORDER BY

Bad

GROUP BY col_one, col_two, col_three
ORDER BY col_two, col_three, col_one

Good

GROUP BY col_two, col_three, col_one
ORDER BY col_two, col_three, col_one
Redshift परिचय

सबक्वेरी समझदारी से इस्तेमाल करें

  • केवल सबक्वेरी लगाने के बजाय सही जॉइन स्ट्रैटेजी अपनाएँ
  • यदि बस सबक्वेरी के सत्य होने की जाँच करनी है, तो प्रेडिकेट में EXISTS उपयोग करें
    SELECT column_name
    FROM table_name
    WHERE EXISTS
      (SELECT column_name 
       FROM table_name 
       WHERE active is True);
    
  • सबक्वेरी दोहरानी हो तो कैशिंग का लाभ लेने के लिए CTEs इस्तेमाल करें
Redshift परिचय

अभ्यास करते हैं!

Redshift परिचय

Preparing Video For Download...