Azure SQL数据仓库CTAS统计信息

时间:2016-10-17 13:45:42

标签: azure-sqldw

"创建表格为" SQL数据仓库中的函数在后台创建统计信息,还是必须手动创建(就像我在正常情况下创建"创建表"语句?)

1 个答案:

答案 0 :(得分:4)

从当前版本开始,始终必须创建关于表的列级统计信息,无论它是使用普通viewcontroller还是使用CTAS public static void main(String[] args) { try { BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("/path/to/test.txt"))); String line; StringBuilder stringBuilder = new StringBuilder(); int offset = 7; while((line = bufferedReader.readLine()) != null) { for(int i=0; i<line.length(); i++) { if(i == offset) { stringBuilder.append("xyz" + line.charAt(i)); } else if(i == line.length()-1) { stringBuilder.append(line.charAt(i) +"\n"); } else { stringBuilder.append(line.charAt(i)); } } } System.out.println(stringBuilder); bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } 创建的命令。为JOIN,WHERE子句,GROUP BY,ORDER BY和DISTINCT子句中使用的列创建统计信息也是一种好习惯。

关于使用CTAS创建的表,数据库引擎正确了解CREATE TABLE中列出的表中有多少行,但不是列级统计级别。对于由CREATE TABLE AS...创建的表,此默认值为1,000行。对于下面的示例,第一个表是使用CTAS创建的,有208行,第二个表包含来自第一个表的普通sys.partitionsCREATE TABLE,还有208行,但是{{1}相信它有1000个例如

sys.partitions

手动创建任何列级统计信息将更正此编号。

总之,无论表格是如何创建的,都始终手动为重要列创建统计信息。