Δεδομένου ότι ένας αναλυτής έχει γράψει ένα ερώτημα SQL.
Εντοπίστε τις αναποτελεσματικότητες στο ερώτημα και προτείνετε πώς να τις αποφύγετε.
Το ερώτημα ενώνει δύο πίνακες:
- πίνακας γεγονότων 'events' με κλειδί 'event_id'
- πίνακας αναφοράς πηγής κυκλοφορίας με κλειδί 'referer_str'
Και οι δύο πίνακες περιέχουν δισεκατομμύρια εγγραφές.
select *
from (select distinct
e.event_id,
e.user_id,
e.category_id,
e.location_id,
s.source_name,
s.medium_name,
s.campaign_name,
row_number() over(partition by e.event_id, e.user_id, e.category_id, e.location_id,
s.source_name, s.medium_name, s.campaign_name) as rnk
from events e
left join traffic_source s on e.referer_str = s.referer_str
where e.event_date = current_date() - 1
group by 1,2,3,4,5,6,7) t
where rnk = 1