none
关于列存储读取逻辑页的问题? RRS feed

  • 问题

  •     select count(customerid) from [table_row] --逻辑读取4934页
        select customerid,count(customerid) from [table_row] --逻辑读取4934页
        group by customerid

        以上是行存储,不同的SQL读取相同的表的页数都相同     
        以下是列存储,不同的SQL读取相同的表的逻辑页不同

        select max(customerid) from [table_column] --逻辑读取1296页
        select count(customerid) from [table_column] --逻辑读取16页
        select customerid,count(customerid) from [table_column] --逻辑读取11616页
        group by customerid


        为何列存储,不同的SQL读取相同的表的逻辑页不同呢?

    2014年12月24日 2:48

答案

  • 你可以看一下列存储的说明,里面有提到存储方式。

    有索引的话,count只需要读很少的内容就可以确定数目。max则必须扫描全部数据。

    group by的话,你检查一下执行计划,很可能用到了worktable或者假脱机之类的。


    想不想时已是想,不如不想都不想。

    • 已标记为答案 wanyongwy 2014年12月29日 10:19
    2014年12月27日 13:37
    版主

全部回复