gpt4 book ai didi

sql-server - 什么是列存储索引以及与聚集索引和非聚集索引有何不同?

转载 作者:行者123 更新时间:2023-12-02 08:17:32 27 4
gpt4 key购买 nike

我对列存储索引感到困惑。

什么是列存储索引,它与聚集索引和非聚集索引有何不同?

最佳答案

假设您有一个如下表,其中包含 col1作为主键:

<表类=“s-表”><标题>col1(PK)col2col3 <正文>123456

普通索引将“按行”(每行)存储,因此单个给定行的所有列都驻留在单个页面上(假设一个页面只能容纳一行):

<表类=“s-表”><标题>页col1col2col3 <正文>第1页123第2页456

因此,当您想要跨多行读取某些内容时,例如与 SUM(col3) ,SQL Server 需要读取第 1 页和第 2 页才能交付,这是本示例中读取的两个页面的总“成本”。

使用列存储索引,相同的数据将“按列”存储在每页面中:

<表类=“s-表”><标题>页第 1 行第2行 <正文>第1页14第2页25第3页36

这意味着如果您想做同样的事情SUM(col3)与之前相比,SQL Server 现在只需读取一页(第 3 页),而不是像以前那样读取两页。

列存储索引为以列为中心的查询提供了明显的优势,因为它们允许处理引擎使用更少的内存和 I/O 来减少不需要的数据读取。

因此,在频繁运行此类查询的大型表中,适当的列存储索引的性能优势可能是巨大的(根据 the Microsoft SQL docs 高达 10 倍的性能和数据压缩增益)。

关于sql-server - 什么是列存储索引以及与聚集索引和非聚集索引有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39828638/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com