Pengoptimalan kueri redshift berasal dari Cluster, Desain Tabel, Pemuatan Data, Penyedotan Data &Analisis di atas tabel.
Biarkan saya menjawab beberapa poin inti dalam daftar di atas.1. Pastikan tabel Anda mytable, detail, klien memiliki SORT_KEY, DIST_KEY2 yang tepat. Pastikan semua tabel Anda di join dianalisa dan di-vaccum dengan benar.
Ini adalah versi lain dari SQL Anda yang sama yang ditulis dalam format Redshift.
Beberapa Tweak yang saya buat adalah
- Menggunakan "Dengan Klausa" untuk menghitung tingkat Cluster yang Dioptimalkan
- Bekas Bergabung dengan cara yang benar dan pastikan gabung kiri/kanan berdasarkan data.
- Menggunakan rentang_tanggal dengan tabel klausa untuk jenis orientasi objek.
- Grup Oleh yang Digunakan dalam SQL utama di bawah ini.
Versi Redshift SQL Saya
/** 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