Redshift क्वेरी ऑप्टिमाइज़ेशन क्लस्टर, टेबल डिज़ाइन, डेटा लोडिंग, डेटा वैक्यूमिंग और टेबल पर विश्लेषण से आता है।
मुझे उपरोक्त सूची में कुछ मुख्य स्पर्श बिंदुओं का उत्तर देने दें।1। सुनिश्चित करें कि आपकी तालिका mytable, विवरण, क्लाइंट के पास उचित SORT_KEY, DIST_KEY2 है। सुनिश्चित करें कि जॉइन में आपकी सभी टेबल एनालाइज्ड और ठीक से खाली हैं।
यहां आपके उसी SQL का एक और संस्करण Redshift प्रारूप में लिखा गया है।
मेरे द्वारा किए गए कुछ बदलाव हैं
- अनुकूलित क्लस्टर स्तर की गणना के लिए "क्लॉज के साथ" का उपयोग किया गया
- यूज्ड जॉइन उचित तरीके से करें और सुनिश्चित करें कि डेटा के आधार पर बाएँ/दाएँ शामिल हों।
- ऑब्जेक्ट ओरिएंटेशन के लिए क्लॉज टेबल के साथ date_range का इस्तेमाल किया।
- यूज्ड ग्रुप बाय नीचे मुख्य एसक्यूएल में।
रेडशिफ्ट एसक्यूएल का मेरा संस्करण
/** Date Range Computation **/
with date_range as (
select ( current_Date - interval '2 weeks' ) as two_weeks
),
/** Filter main ResultSet**/
myGroupSet as (
SELECT b.val AS myGroup,
c.username,
a.someCode,
a.timeTaken,
(case when (b.name == 'name1') THEN b.val::INTEGER ELSE 0 END ) as name11,
(case when (b.name == 'name2') THEN b.val::INTEGER ELSE 0 END ) as name12
FROM database.myTable a,
join date_range dr on a.date > dr.two_weeks
join database.detail b on b.id = a.id
join database.client c on c.c_id = a.c_id
where a.date > current_Date - interval '2 weeks'
)
/** Apply Aggregation **/
select myGroup, username, someCode, timeTaken, date,
sum(name1), sum(name2)
from myGroupSet
group by myGroup, username, someCode, timeTaken, date