Таблица dataset.transactions
содержит ~ 5.000.000 записей.
1) Этот запрос занимает ~ 3 секунды:
SELECT *
FROM dataset.transactions
WHERE customer = 'c1' AND year = 2017
2) Этот запрос занимает около 10 секунд:
SELECT
salesrep_id AS id,
date AS lastUsedForFplDate,
fpl AS individual_fpl,
ANY_VALUE(salesrep_name) AS salesrep_name,
ANY_VALUE(customer) AS customer
FROM dataset.transactions VT1
WHERE date = (
SELECT
MAX(date)
FROM dataset.transactions VT2
WHERE
VT1.salesrep_id = VT2.salesrep_id
)
GROUP BY
salesrep_id,
date,
fpl
3) Принимая во внимание, что это занимает более 200 секунд (пробовал несколько раз, отменял каждый раз через 200 секунд):
WITH transactions AS (
SELECT *
FROM dataset.transactions
WHERE customer = 'c1' AND year = 2017
)
SELECT
salesrep_id AS id,
date AS lastUsedForFplDate,
fpl AS individual_fpl,
ANY_VALUE(salesrep_name) AS salesrep_name,
ANY_VALUE(customer) AS customer
FROM transactions VT1
WHERE date = (
SELECT
MAX(date)
FROM transactions VT2
WHERE
VT1.salesrep_id = VT2.salesrep_id
)
GROUP BY
salesrep_id,
date,
fpl
Третий запрос состоит из двух запросов выше, за исключением того, что # 2 использует вывод # 1 в качестве источника.
Почему это занимает так много времени?