En iyi sorguları yazma

Redshift’e Giriş

Jason Myers

Principal Engineer

Sütunları sınırlayın

  • SELECT * kullanmaktan kaçının
  • Sonuçta gerekmeyen sütunları seçmeyin
    • Redshift’in sütun bazlı olduğunu ve veriyi sütuna göre çektiğini unutmayın
Redshift’e Giriş

DISTKEY ve SORTKEY kullanın

Mümkün olduğunda şu yan tümcelerde kullanın

  • JOIN
  • WHERE
  • GROUP BY

 

ORDER BY içinde SORTKEY sırasını kullanın

  • Yüksek optimize: sortkey_1, sortkey_2, sortkey_3
  • Optimize değil: sort_key_1, sort_key_3

Dağıtılmış Sorgular

Redshift’e Giriş

İyi koşullar (predicate) yazma

  • DISTKEY ve SORTKEY kullanın
  • Tablonun join’ine yakın yazın
  • İçlerinde fonksiyon kullanmaktan kaçının
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’e Giriş

Sütun sıralamasında tutarlı olun

Şunları kullanırken:

  • GROUP BY
  • ORDER BY

Kötü

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

İyi

GROUP BY col_two, col_three, col_one
ORDER BY col_two, col_three, col_one
Redshift’e Giriş

Alt sorguları akıllıca kullanın

  • Sadece alt sorgu kullanmak yerine uygun join stratejileri kullanın
  • Yalnızca alt sorgunun doğruluğunu kontrol ediyorsanız, koşullarda EXISTS kullanın
    SELECT column_name
    FROM table_name
    WHERE EXISTS
      (SELECT column_name 
       FROM table_name 
       WHERE active is True);
    
  • Alt sorguları tekrar kullanacaksanız, önbellekten yararlanmak için CTE kullanın
Redshift’e Giriş

Hadi pratik yapalım!

Redshift’e Giriş

Preparing Video For Download...