2016-01-12 44 views
0

我有一个很大的表,有400列和100,000行。 当我选择所有列时,查询非常慢(〜7500ms)。 在3列上只有一个主键。 我不在乎插入/更新的速度,这张表大部分是用于读取的。 我在阅读关于如何Clustered Columnstore Index与我的要求非常匹配,以提高阅读性能。聚集列存储索引很慢

所以我尝试使用聚集列存储索引和速度几乎相同(约7000毫秒)。我真的期望有更高的改进。我错过了什么吗?

enter image description here

+0

7.5秒选择40,000,000项数据实际上并不那么慢。大部分时间可能正在处理大型数据集。 –

回答

-1

要回答这个问题,我需要知道你的查询和字段的where子句中的列定义。

这些是相同的数据类型以确保使用索引是非常重要的。有时需要完成转换(时间戳记日期或字符到日期等),这使得不可能使用索引。

+0

与不含'WHERE'子句的'SELECT * FROM TableName'查询无关。 –

+0

问这个问题的人没有说他/她没有where子句。他只说他正在选择所有栏目。并不是他正在选择所有行。 –

+0

这在屏幕截图中可见。 –

0

当您只选择400列中的一部分时,您将看到真正的性能提升。在传统的行存储中,当您选择该行时,即使只选择了几列,也必须始终访问所有列。使用列存储时,如果您只选择了400列中的100列,则查询速度应大致快四倍,并且有25%的逻辑读数。选择*你不会看到太多改进。