次のようなクエリがあります。
SELECT
e.event_id,
(
SELECT
event_id
FROM atomic.events
WHERE
domain_userid = e.domain_userid
ORDER BY collector_tstamp
LIMIT 1
) AS parent_event_id
FROM snowplow_intermediary.events_enriched e
LIMIT 1
各ユーザーの最初のイベントを見つけようとしています。これはかなり速い ~5 秒です。user_ipaddress
代わりにユーザーを見つけようとしている場合、domain_userid
それはずっと遅くなります。300 秒後には完了していません。
SELECT
e.event_id,
(
SELECT
event_id
FROM atomic.events
WHERE
user_ipaddress = e.user_ipaddress
ORDER BY collector_tstamp
LIMIT 1
) AS parent_event_id
FROM snowplow_intermediary.events_enriched e
LIMIT 1
データ型はdomain_userid varchar(36) encode runlength
とuser_ipaddress varchar(45) encode runlength
です。
クエリの EXPLAIN は次のとおりです。
https://gist.github.com/mortenstarfly/4ce3be9b3a19aac2601a
https://gist.github.com/mortenstarfly/2008b0f737259df30695
2番目のクエリを高速化したいです。助言がありますか?