如何通过SQL优化解决分区上的rank()的假脱机空间错误?

时间:2016-10-23 22:20:52

标签: teradata rank spool

我有一张表格,其中包含以

格式向许多不同客户提供的联系信息
  

email_address | treatment_group | 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上的辅助主索引。我收集了两组索引的统计数据。该表非常大 - 约200M记录。我可以尝试优化此查询吗?

1 个答案:

答案 0 :(得分:1)

没有足够的信息来确定错误原因。 首先,请在您的问题中添加以下内容:

  1. 道明版(select * from dbc.dbcinfo
  2. 执行计划
  3. 您使用过的统计信息收集命令
  4. customer_id最高频率(select top 10 customer_id,count(*) from db.responses_with_rank group by 1 order by 2 desc
  5. 您的表格中是否有宽文本列?
  6. P.S。 我强烈建议您使用create multiset table而非create table