精华内容
下载资源
问答
  • SQL Server 2016 列存储索引功能增强

    千次阅读 2016-06-16 15:21:56
    列存储索引(columnstore index)在SQL Server 2012中已经引入,其带来性能提升的同时也有很多限制,比如对带有列存储索引的表进行INSERT, UPDATE和DELETE时,会遇到如下错误提示: 由于这种限制,索引列存储索引...
    

    列存储索引(columnstore index)在SQL Server 2012中已经引入,其带来性能提升的同时也有很多限制,比如对带有列存储索引的表进行INSERT, UPDATEDELETE时,会遇到如下错误提示:


    由于这种限制,索引列存储索引并不太适合在SQL Server 2012 OLTP DB中应用。不过,SQL Server 2016对列存储索引做了很多改进,其中我觉得最大的变化是可更新的列存储索引,即可以直接对带有列存储索引的表进行INSERT, UPDATEDELETE,因此,我们可以在SQL Server 2016环境中尝试应用这以功能,已提升查询性能。若想具体了解列存储索引的概念、特征、创建及使用,可参考我之前整理的Blog

    SQL 2016环境测试的过程中,我发现列存储索引对于有聚集函数的T-SQL,有很好的性能提升,比如下面这个示例,性能提升约15

    JOIT表有1500833笔记录,复制一份到JOIT_CSI表,2张表的唯一区别是JOIT_CSI有非聚集列存储索引, 在统计列SERNUM个数的查询中,可以发现JOIT需要7210ms,而JOIT_CSI只有463ms,性能提升约15倍。感兴趣的,可以去发掘其他性能提升的最佳实践。




    展开全文
  • SQL Server2012中只有非聚集的列存储索引(只读),从SQL Server2014开始有聚集的列存储索引(可更新),但2014依然不可以更新非聚集列存储索引。SQL Server2016+ 中可以更新非聚集列存储索引。 列存储 “列存储”...

    参考:msdn  cnblogs

    简介

    SQL Server2012中只有非聚集的列存储索引(只读),从SQL Server2014开始有聚集的列存储索引(可更新),但2014依然不可以更新非聚集列存储索引。SQL Server2016+ 中可以更新非聚集列存储索引。


    列存储
    “列存储”是在逻辑上组织为包含行和列的表、在物理上以按列数据格式存储的数据。


    行存储
    “行存储”是在逻辑上组织为包含行和列的表、在物理上以按行数据格式存储的数据。 这是存储关系表数据的传统方法。 在 SQL Server 中,行存储是指基础数据存储格式为堆、聚集索引或内存优化表的表。


    行组
    “行组”是同时压缩为列存储格式的一组行。 每个行组通常可包含的最大行数是 1,048,576 行。


    增量存储
    “增量存储”仅用于聚集列存储索引,它是一个聚集索引,可以不断地存储行,并在行数达到某个阈值后,将行移入列存储,从而提高列存储压缩率和性能。


    在大容量加载期间,大多数行直接转到列存储,而不通过增量存储中转。 在大容量加载结束时,某些行的数量可能无法满足行组的最小大小要求(即 102,400 行)。 在发生这种情况时,将最后的这些行转到增量存储而非列存储中。 对于少于 102,400 行的较小的大容量加载,所有行都直接转到增量存储中。


    非聚集列存储索引
    “非聚集列存储索引”和聚集列存储索引在功能上相同。 不同之处在于,非聚集索引是在行存储表上创建的辅助索引,而聚集列存储索引是整个表的主存储。


    为何要使用列存储索引?
    列存储索引可提供极高的数据压缩级别(通常是传统方法的 10 倍),从而明显降低数据仓库存储成本。 此外,对于分析,它们提供的性能比 btree 索引高出一个量级。 它们是数据仓库和分析工作负载的首选数据存储格式。


    如何在行存储索引与列存储索引之间做出选择?
    行存储索引最适合用于查找数据、搜索特定值的查询,或者针对较小范围的值执行的查询。 可对事务工作负载使用行存储索引,因为这些工作负载往往需要进行表查找而不是表扫描。


    对于扫描大量数据(尤其是大型表中)的分析查询,列存储索引可提高性能。 可对数据仓库和分析工作负载(尤其是对事实数据表)使用列存储索引,因为它们往往需要进行全表扫描而不是表查找。


    是否可以在同一个表中组合行存储与列存储?
    是。 从 SQL Server 2016开始,你可以在行存储表上创建可更新的非聚集列存储索引。 列存储索引将存储所选列的副本,因此你确实需要为此准备额外的空间,但是,数据的压缩率平均可提高 10 倍。 如果采取这种做法,你可以同时对列存储索引以及行存储索引上的事务运行分析。 当行存储表中的数据更改时,列存储将会更新,因此这两个索引适用于相同的数据。


    从 SQL Server 2016开始,你可以对一个列存储索引使用一个或多个非聚集行存储索引。


    限制:

    1. 最多支持1024列在你的索引中;
    2. 列存储索引不能被定义为唯一性索引;
    3. 不能创建视图;
    4. 不能包含稀疏列;
    5. 不能使用ALTER INDEX来修改索引,只能drop然后重新创建;(SQL Server2016+可以)
    6. 不能使用INCLUDE关键字。
    7. 不能排序列;
    8. 不能使用FILESTREAM属性。
    9. 当然还有一些数据类型不能包含在列存储索引中(binary , varbinary , ntext , text, , image, varchar(max) , nvarchar(max), uniqueidentifier, rowversion , sql_variant,精度大于18 的decimal,CLR 和xml等)


    创建列存储索引:

    --SQL Server2014
    USE tempdb
    GO
    IF OBJECT_ID('t') IS NOT NULL
    DROP TABLE t
    GO
    CREATE TABLE t(
    	id INT NOT NULL
    	,n NVARCHAR(50)
    )
    GO
    --如果有主键,则列聚集存储索引无法创建成功
    ALTER TABLE t ADD CONSTRAINT PK_t PRIMARY KEY (id)
    CREATE UNIQUE INDEX UQ_t_id ON t(id)
    CREATE INDEX ix_t_id ON t(id)
    
    CREATE NONCLUSTERED columnstore INDEX ix_column_t_1 ON t(id,n)
    CREATE NONCLUSTERED columnstore INDEX ix_column_t_2 ON t(id,n)
    /*
    不支持多个非聚集列存储索引。
    */
    --非聚集列存储索引,无法插入数据
    --注:在 SQL Server2016+ 中是可以插入的
    INSERT INTO t VALUES(1,2)
    /*
    由于不能在包含非聚集列存储索引的表中更新数据,INSERT 语句失败。请考虑在发出 INSERT 语句前禁用该列存储索引,然后在完成 INSERT 后重新生成该列存储索引。
    */
    --列存储索引不需要包含任何列
    CREATE CLUSTERED columnstore INDEX ix_column_t_2 ON t
    /*
    不能对 表“t”创建多个聚集索引。请考虑使用 "with (drop_existing = on)" 选项创建新聚集索引。
    */
    ALTER TABLE t DROP CONSTRAINT PK_t
    CREATE CLUSTERED columnstore INDEX ix_column_t_2 ON t
    /*
    CREATE INDEX 语句失败,因为无法对具有非聚集列存储索引的表创建聚集列存储索引。请考虑删除所有非聚集索引,然后重试。
    */
    DROP INDEX ix_t_id ON t
    DROP INDEX UQ_t_id ON t
    DROP INDEX ix_column_t_1 ON t	--注:列非聚集索引也得删除,才能创建 聚集列存储索引
    --
    CREATE CLUSTERED columnstore INDEX ix_column_t_2 ON t
    

    其实性能提升才是关键, 但由于限制太多, 累觉不爱(很多大表都带有 nvarchar(max) 类型字段,无法使用) 。


     

    展开全文
  • SQL Server 2016:内存列存储索引

    千次阅读 2015-08-25 13:56:44
    作者 Jonathan Allen,译者 谢丽SQL Server 2016的一项新特性是可以在“内存优化表(Memory Optimized Table)”上添加“列存储索引(Columnstore Index)”。要理解这是什么意思,我们应该首先解释术语列存储索引和...

    作者 Jonathan Allen,译者 谢丽

    SQL Server 2016的一项新特性是可以在“内存优化表(Memory Optimized Table)”上添加“列存储索引(Columnstore Index)”。要理解这是什么意思,我们应该首先解释术语列存储索引和内存优化表。

    列存储索引是一种按照列而不是行组织数据的索引。每个数据块只存储一个列的数据,最多包含100万行。因此,如果数据为5列1000万行,那么就需要存储在50个数据块中。当只查询部分列时,这种数据组织策略特别有效,因为数据库不会从磁盘读取用户不关心的列。

    列存储索引比表扫描要快得多,但没有传统的B树索引那么快。这特别适合于那种无法预测需要什么索引的即时报表。

    内存优化表正如它的名字, 它是一个经过优化并一直驻留在内存中的表。这有许多好处,比如锁无关写,但它也有很大的局限性。比如,只允许有8个索引,这对于用于即时查询的表而言限制太大。

    SQL Server 2016部分地弥补了这种限制,它允许那8个索引中的其中一个为列存储索引。但要遵循如下规则:
    •像内存优化表上的其它索引一样,列存储索引必须在表创建时定义。
    •列存储索引必须包含基表中的所有列。(在普通表上的列存储索引不存在这种限制。)
    •列存储索引必须包含基表中的所有行。换言之,它不能是“筛选索引(filtered index)”。

    一个与内存优化表相关的特性是创建本地编译查询。数据库使用C编译器将这些查询编译成了机器码,而不使用SQL Server解释器。使用列存储索引的查询可以使用这个选项,而不用总是通过解释器运行。

    查看英文原文SQL Server 2016: In-Memory Columnstore Indexes

    展开全文
  • SQL Server 2012 列存储索引

    万次阅读 2012-10-19 10:45:04
    关键字:sqlserver 2012,列存储索引,column index 概述 SQL Server 2012 通过采用列式存储的索引,大大提高了数据仓库的查询效率。这种全新的索引与其它新功能相结合,在一些特定应用场景下可以将数据仓库的查询...

    关键字:sqlserver 2012,列存储索引,column index

     

    概述

    SQL Server 2012 通过采用列式存储的索引,大大提高了数据仓库的查询效率。这种全新的
    索引与其它新功能相结合,在一些特定应用场景下可以将数据仓库的查询性能提高数百倍
    甚至数千倍,对于一些决策支持类的查询,通常也可以达到10倍左右的性能提升。这些
    性能的提升,都是通过大家所熟悉的T-SQL语句以及SQL Server管理界面所实现的,因此
    可以和包括SQL Server Reporting Services在内的所有报表解决方案完全兼容。

    列式索引将每一列单独存储在一组磁盘页中,而不是像传统方式那样在每个页中存储多个
    行。我们通常使用“行存储”来描述每个页中包含多行数据的堆或者B树结构。
    采用列式存储时,列将存储在不同的页组中,这样存储将带来以下好处:

    . 只有查询所涉及到的列才会从磁盘中获取出来(在典型的事实数据表中,查询所涉
    及到的列不会超过总列数的15%)
    . 由于每个列中都会有大量重复数据,因此这种数据结构更便于进行压缩
    . 数据经过高度压缩后,缓冲区的命中率将大大提高,并且访问频繁的列将缓存在内
    存中,而访问不频繁的列则不会长时间占用内存

    SQL Server 2012 列式索引采用“纯粹”的列式存储,而非混合模式,因为不同列中的所有
    数据将会分开存储在不同的页中,这样一来I/O扫描的性能以及缓冲区的命中率将会大幅
    提升。SQL Server是大型数据库产品中第一个支持纯列式索引的产品。虽然其它厂商声称
    市场上大规模使用的数据库产品不可能提供纯列式存储技术,但很荣幸我们做到了这一点!

    使用列式索引

    为了提高查询性能,您所要做的就是针对数据仓库中的事实表创建列式索引。如果有非常
    大的维度表(比如超过1000万条记录),您可以为其创建列式索引。接下来,您只需要
    向SQL Server提交查询,然后查询的速度将会大大加快。

    性能特性

    列式索引针对星型联接查询进行了高度优化,但列式索引并不是万能的。事实表到事实表
    之间的联接查询以及多列的联接查询很难通过列式索引大幅提高性能,甚至不会有任何性
    能提升。OLTP系统中常用的查询(例如查询某条记录或者取出某条记录的所有列)往往
    通过B树结构的索引要比列式索引更有助于提高性能。总之列式索引并不一定总能提高数
    据仓库的查询性能。如果列式索引对当前查询没有性能提升,那么查询优化器将会选择堆
    或者B树的方式访问数据。如果在这种情况下查询优化器没有自动选择性能更好的堆或B
    树方式来访问数据,那么开发人员可以通过查询提示来使用堆或B树。

    压缩

    通过我们观察,在真实环境中对不同的事实数据表进行压缩,可以获得4-15倍的压缩比。
    列式索引并非聚集索引,因此数据仍然采用行的方式进行存储。列式聚集索引其实就是数
    据的一份拷贝,不仅可以大幅提高性能,而且还可以大大节省存储空间,不过该功能将在
    后续版本中提供。

    加载数据

    在SQL Server 2012 中,创建了列式索引的数据表将不能够通过INSERT, UPDATE, DELETE, 以
    及MERGE 语句进行操作,也不能进行大容量加载的操作。如果需要将数据导入到带有列
    式索引的数据表中,可以通过分区切换的方式,或者先禁用列式索引,然后更新数据表,
    最后再重建索引。针对分区数据表所创建的列式索引必须和分区对齐。大多数数据仓库用
    户都会在每天晚上进行数据加载操作,并且在白天的时候将数据仓库设置为只读模式,因
    此列式索引的这些限制不会有影响。

    此外,您还可以使用UNION ALL 语句将带有列式索引的数据表和不带列式索引的可更新数
    据表整合为一个逻辑视图,然后对该视图执行查询操作。这样就可以动态的将新数据插入
    到一个单独的逻辑事实表中,同时最大限度的保留列式索引所带来的性能优势。

    没有创建列式索引的数据表仍然可以进行更新,这样用户可以联机创建维度表,然后将其
    与采用列式索引的事实表进行联接,从而响应连续的查询。这种方式非常实用,例如进行
    零售分析时,需要将1000条产品信息分为一组,然后对其重复执行查询。这些产品的ID
    字段可以放在维度表中,然后将这个维度表与采用列式索引的事实表进行联接操作。

    在预发行版本中,创建列式索引所需的时间,大概是创建聚集索引所需时间的2-3倍。客
    户需要在自己的ETL流程中考虑时间上的差异。虽然如此,客户往往无需对聚合结果进行
    汇总,因此ETL的总体时间还是能节省下来。


    列式索引带来的收益

    列式索引通过卓越的性能,可以让用户交互式的探索数据,从而通过现有数据获得更多的
    商业价值。 您可以在廉价的SMP服务器中快速查询数亿条记录,并在内存中缓存频繁访
    问的数据。

    列式索引同时还可以减轻IT部门的压力,并通过降低对聚合汇总(包括索引视图、用户定
    义的汇总表、或者OLAP多维数据集)的依赖来缩短ETL的时间。设计并维护聚合运算通
    常是耗时且棘手的工作,而一个简单的列式索引可以替代很多聚合运算。列式索引要比聚
    合运算灵活的多,因为如果查询稍作更改,特定的聚合有可能无法提高查询性能,而列式
    索引则依然可以提供很好的支持。

    如果用户使用OLAP系统来提升查询性能,但却更倾向于使用T-SQL语句来编写查询,这
    些用户可以借助列式索引技术,减少数据移动的操作,从而降低成本和复杂度。用户如果
    使用OLAP工具所提供的报表功能、维度建模功能、预测功能、或者决策支持功能,则还
    将继续从这些工具中获益。此外,用户现在还可以针对采用列式索引的SQL Server数据仓
    库使用ROLAP,并且比之前的OLAP提供更好的性能,同时通过避免多维数据集构建的过
    程而节省时间。

    列式索引性能优势的来源

    正如前文所介绍的那样,由于大多数查询只涉及到一个表的某几列,再加上压缩技术,因
    此列式索引降低了数据从磁盘加载到内存的需求,从而大幅提高了性能。这只是性能提升
    的一个因素,很多其它相关技术也会对性能产生影响,虽然这些技术我们没有详细介绍,
    但有一点可以肯定—这些技术对性能的提升都是真实可信的!

    结论

    SQL Server 2012所提供的列式索引及其相关查询功能在技术上取得了突破性的进展,可以
    为数据仓库查询提供空前的性能优势。企业的最终用户可以使用熟悉的报表工具,在更短
    的时间内从数据中获取商业价值,他们将成为最主要的受益者。


    展开全文
  • SQLServer 2012 列存储索引

    千次阅读 2015-09-19 17:17:28
    SQL Server 数据库引擎中的列存储索引可用于显著加快常见数据仓库查询的处理时间。 典型的数据仓库工作负荷涉及汇总大量数据。 在数据仓库和决策支持系统中通常用于提高性能的技术包括预先计算的汇总表、索引视图、...
  • SQL Server 2012新特性_列存储索引(3)

    千次阅读 2012-04-09 16:33:13
    本篇Blog将介绍列存储索引相关的性能、查询提示及使用限制等方面的知识。若要了解列存储及列存储索引的概念及特征,请点击这里;若要了解列存储索引的创建与使用,请点击这里。  列存储的性能 要了解类存储索引的...
  • SQL Server 2012新特性_列存储索引(2)

    千次阅读 2012-04-05 21:58:06
    在上一篇Blog(SQL Server 2012新特性_列存储索引(1) )中,对列存储及列存储索引的概念及特征等做了一些介绍,接下来,主要对列存储索引的创建与使用做一些演练: 创建COLUMNSTORE INDEX 创建COLUMNSTORE INDEX...
  • SQL Server 2012新特性_列存储索引(1)

    千次阅读 2012-04-03 10:43:20
    做企业应用几年来,每天与SQL Server打交道,深知日益增长的数据给OLTP效率带来的巨大影响...硬件升级、索引、高效执行的SQL、相关性能提升的配置等,往往是我们考虑的。对于拥有海量数据的数据仓库(DW)、决策支持系
  • es索引优化(行存储、列存储索引)

    千次阅读 2019-04-01 13:36:37
    es的底层存储使用lucene,主要包含行存储(storefiled),列存储(docvalues)和倒排索引(invertindex)。 大多数使用场景中,没有必要同时存储这三个部分,可以通过下面的参数来做适当调整 1 mapping type index ...
  • 微软关于创建列存储索引的介绍: https://docs.microsoft.com/zh-cn/sql/t-sql/statements/create-columnstore-index-transact-sql#convert 其中跳转到示例的第一项:将行存储表转换为列存储的示例 请问使用这一句...
  • SQL Server列存储实现方案

    千次阅读 2018-10-09 18:49:57
    2014版本使用可更新聚集列存储索引技术解决了只读的问题,使用列存储的表支持修改;2016版本列存储支持操作分析,能够对事务工作负载运行高性能实时分析。 列存储索引是一种使用列式数据格式(称为“列存储”)存储...
  • 包含以下内容 一列存储的原理 什么是列存储 列存储技术的主要特征 列存储的过程 ... 列存储索引的种类 为什么使用列存储 何时应使用列存储 三、列存储的应用 如何创建列存储索引 与行存储的性能对比
  • Exadata中最有用的功能-存储索引

    千次阅读 2012-08-14 16:28:50
    我们无法通过存储索引来定位拥有给定上特定值的一系列记录,相反的,存储索引是存储服务器上的软件,它的设计目的是为了消除磁盘I/O。因为通过存储索引可以定位的是不存在所需记录的位置而非存在的位
  • 行存储 VS 列存储

    万次阅读 多人点赞 2018-07-06 12:56:03
    概述目前大数据存储有两种方案可供选择:行存储(Row-Based)和列存储(Column-Based)。业界对两种存储方案有很多争持,集中焦点是:谁能够更有效地处理海量数据,且兼顾安全、可靠、完整性。从目前发展情况看,关系...
  • MongoDB 单键()索引

    千次阅读 2016-12-09 17:16:01
    MongoDB支持基于集合文档上任意创建索引。缺省情况下,所有的文档的_...这些索引可以是单列,也可是多(复合索引),多键索引,地理空间索引,文本索引以及哈希索引等。 本文主要描述在基于文档上的单列来创建索引
  • 行存储和列存储的区别

    万次阅读 2017-03-28 10:51:51
    列存储不同于传统的关系型数据库,其数据在表中是按行存储的,列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储,在查询只...
  •  在报这个错后,检查了存储过程,是正常的.然后又浪费了一个多小时的时间检查相关的文件配置等.终于找到了错误.\ 原来是把call.setObject(1, jsonMap.get("list")); call.setObject(2, jsonMap.get("clientIp")...
  • MySQL之数据存储索引篇(一)

    千次阅读 2017-11-11 22:01:42
    付出的代价:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。常见的索引 类别 名称 数据结构 按照数据的连续性 聚簇索引 b+tree
  • Table of Contents 存储数据库 Examples of Column StoreDBMSs Hbase Table Row Column Column Family ...存储数据库 ...式数据库是以相关存储架构进行数据存储的数据库,主要...
  • 列存储、行存储之间的关系和比较

    千次阅读 2014-09-03 20:27:54
    列存储数据压缩索引 Low Fast 索引 Bit-Wise索引High Group索引Word 索引Compare索引Join 索引Time Analytic 索引 三行列存储比较 基于行的储存基于列的存储 四列存储数据查询中的连接策略选择方法 ...
  • 数据库索引存储结构

    千次阅读 2018-11-08 17:16:08
    数据库索引存储结构 主键索引(PRIMAY KEY):  一个表中只能有一个主键,创建主键自动创建主键索引,该索引是唯一索引,其主键的数据值不重复。建议使用INT型的自动增长主键,这样索引效率最高。 ...
  • 一、 MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较。  1、普通索引:create index 索引名 Tablename(的列表)  alter table TableName ...
  • 2、索引字段越小越好(因为数据库数据存储单位是以“页”为单位的,数据存储的越多,IO也会越大) 3、离散度大的放到联合索引的前面(离散度:字段中不同的记录的数量,数量越多,则表明离散程度越大) 什么是联合...
  • 什么是存储数据库?

    万次阅读 多人点赞 2018-03-14 10:52:46
    列存储不同于传统的关系型数据库,其数据在表中是按行存储的,列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储,在查询只...
  • MySQL索引详解之索引存储方式

    千次阅读 2020-04-21 18:53:46
    前言 很多人对数据库索引可能都是知其然却不知其所以然,对索引没有很深入的理解,在使用...索引存储方式 索引的利弊以及高效使用 数据存储方式 上篇文章我们了解了索引的数据结构,下面我们再来了解另外一个概念...
  • SQL Server 索引管理——索引创建建议...SQLServer 2012之前主要的索引为行索引,即我们常见的聚集索引和非聚集索引,SQLServer 2012及以后,增加列索引,包括聚集列存储索引和非聚集列存储索引。列索引主要使用在数...
  • 列存储、行存储

    万次阅读 2013-02-26 13:24:24
    Sybase在2004年左右就推出了列存储的Sybase IQ数据库系统,主要用于在线分析、数据挖掘等查询密集型应用。列存储,缩写为DSM,相对于NSM(N-ary storage model),其主要区别在于: DSM将所有记录中相同字段的数据...
  • 行存储和列存储

    千次阅读 2018-01-06 16:26:32
    传统的行式数据库将一个个完整的数据行存储在数据页中。这种方式在大数据量查询的时候会出现以下问题 ...2、虽然建立索引和物化视图可以可以快速定位,但是也需要花费大量时间   但是如果处理查询时需要用
  • ES索引存储原理

    万次阅读 多人点赞 2017-08-06 14:36:54
    ES索引存储原理不变性写到磁盘的倒序索引是不变的:自从写到磁盘就再也不变。 这会有很多好处: 不需要添加锁。不存在写操作,因此不存在多线程更改数据。 提高读性能。一旦索引被内核的文件系统做了Cache,绝大...
  • 什么是列存储

    万次阅读 2011-05-13 15:28:00
    列存储不同于传统的关系型数据库,其数据在表中是按行存储的,列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因 此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储,在查询只...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 389,526
精华内容 155,810
关键字:

列存储索引