Việc tối ưu hóa truy vấn Redshift đến từ Cluster, Table Design, DataLoading, Data Vacuuming &Analysis trên bảng.
Hãy để tôi trả lời một số điểm tiếp xúc cốt lõi trong danh sách trên. Đảm bảo rằng bảng của bạn, bảng chi tiết, máy khách có SORT_KEY, DIST_KEY2 thích hợp. Đảm bảo rằng tất cả các bàn của bạn tham gia đều được kiểm tra và tiêm phòng đúng cách.
Đây là một phiên bản khác của SQL tương tự của bạn được viết ở định dạng Redshift.
Một số tinh chỉnh tôi đã thực hiện
- Đã sử dụng "Với mệnh đề" để tính toán cấp độ Cụm được tối ưu hóa
- Đã sử dụng Tham gia đúng cách và đảm bảo kết hợp trái / phải dựa trên dữ liệu.
- Đã sử dụng date_range với bảng mệnh đề cho loại hướng đối tượng.
- Nhóm By được sử dụng trong SQL chính bên dưới.
Phiên bản Redshift SQL của tôi
/** 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