Teradata 14(由TC提供)可能会引起人们的注意。
使用如下定义的表:
CREATE TABLE test(
CALENDAR_DATE DATE FORMAT 'YY/MM/DD' NOT NULL
,RETAIL_OUTLET_NUMBER INTEGER NOT NULL
,BASE_PRODUCT_NUMBER INTEGER NOT NULL
)
PRIMARY INDEX (calendar_date, retail_outlet_number, base_product_number)
此SQL将失败:
COLLECT STATS test COLUMN(
calendar_date, base_product_number, retail_outlet_number);
错误消息:
3706:语法错误:不允许在同一组列上使用不同列排序的多个统计信息
可是:
COLLECT STATS test COLUMN(
calendar_date, retail_outlet_number, base_product_number);
会好的。
现在,在collect stats语句和主索引中,列的顺序必须相同。
...
还有其他方法可以让它们无需更改列顺序???
...谢谢
答案 0 :(得分:3)
使用Teradata 14,您可以通过明确命名来解决多列统计信息的问题:
COLLECT STATISTICS
COLUMN (Calendar_Date, Base_Product_Number, Retail_Outlet_Number) AS Stats_CalDate_ProdNum_RtlNum
ON test;
后续的回忆可以使用:
完成COLLECT STATISTICS COLUMN Stats_CalDate_ProdNum_RtlNum ON test;
Teradata客户可以通过Teradata @ Your Service或您的CSR获得一本橙皮书,解释了这一点以及Teradata 14 Statistics的其他注意事项。 Carrie Ballinger还简要介绍了Teradata 14 Statistics增强功能here。
答案 1 :(得分:2)
此错误即将发生,因为已按顺序收集统计信息
calendar_date,retail_outlet_number,base_product_number
您无法在不同订单中的相同列上收集统计信息。所以,如果你想按照你想要的顺序收集,即
calendar_date,base_product_number,retail_outlet_number
您必须先使用
进行DROP统计DROP STATS ON TEST COLUMN(calendar_date, retail_outlet_number, base_product_number);
然后使用您的首选订单再次收集。