Как решить проблему с пространством спула с помощью rank () для раздела с помощью оптимизации SQL?
У меня есть таблица с информацией о контактах с разными клиентами в формате
адрес электронной почты | обработка_группа | customer_id | contact_date |
Я пытаюсь добавить столбец, который просматривает каждого отдельного клиента и нумерует контакты, которые он получил от самого давнего до последнего. Я использую этот код:
explain create table db.responses_with_rank
as
( select a.*,
rank () over (partition by customer_id order by contact_date asc)as xrank
from db.responses_with_rank
)
with data
primary index (email_address, treatment_group)
Мой запрос выдан. Существует первичный индекс email_address, treatment_group, который приводит к перекосу 1,1, и вторичный первичный индекс customer_id. Я собрал статистику по обоим наборам индексов. Таблица довольно большая - около 200 миллионов записей. Могу ли я попытаться оптимизировать этот запрос?
1 ответ
Недостаточно информации для определения причины ошибки. Для начала добавьте в свой вопрос следующее:
- Версия TD (
select * from dbc.dbcinfo
) - План выполнения
- Команды сбора статистики, которые вы использовали
- customer_id верхние частоты (
select top 10 customer_id,count(*) from db.responses_with_rank group by 1 order by 2 desc
) - У вас есть широкие текстовые столбцы в вашей таблице?
Ps настоятельно рекомендую использовать create multiset table
и не create table
,