我有一个相当大的表,有400列和100,000行。 当我选择所有列时,查询非常慢(~7500ms)。 3列上只设置了主键。 我不关心插入/更新的速度,这个表主要用于读取。 我正在阅读Clustered Columnstore Index如何与我的要求完美匹配,以提高阅读性能。
所以我尝试使用聚簇列存储索引,速度几乎相同(~7000ms)。我真的期待更高的改进。我错过了什么吗?
答案 0 :(得分:1)
当仅选择400列中的某些列时,您将看到真正的性能提升。在传统的rowstore中,即使您只选择了几列,也必须在选择该行时访问所有列。对于columnstore,如果您只选择了400列中的100列,那么查询应该大约快4倍,而逻辑读取占25%。使用select *,您将看不到太多改进。
答案 1 :(得分:-1)
要回答这个问题,我需要知道你的查询以及where子句中字段的列定义。
非常重要的是,这些数据类型必须相同才能确保使用索引。有时必须进行转换(到目前为止的时间戳或者char到date等),这使得无法使用索引。