单列巨大 table(2.5 B 行)。聚集索引与聚集列存储索引
Single Column Huge table (2.5 B rows). Clustered index Vs Clustered Columnstore index
我们有一个巨大的 table 表 1(25 亿行),单列 A(NVARCHAR(255) 数据类型)。针对此 table 进行查找操作的正确方法是什么? A 上的聚集索引与 A 上的聚集列存储索引。
我们已经将此 table 保存在与另一个 table 表 2 不同的文件组中,它将与该文件组合并。
您是否建议对 table 进行分区以获得更好的性能?此列也将包含 unicode 数据。那么,哪种分区方法适用于 unicode 数据类型?
更新:为了进一步说明,table 的用例是 SEEK。 table 正在存储个人的标识符。这里主要关注的是在 table 巨大的情况下 SEEK 的性能。此 table 将在事务中引用。我们希望交易时间短。
聚集索引与列存储索引取决于 table 的用例。列存储跟踪列中的唯一条目以及存储这些条目的行。这使得它对于数据仓库任务非常有用,例如针对索引列进行聚合,但对于需要提取少量特定行的事务性任务来说并不是最佳选择。如果您使用的是 SQL Server 2014 或更高版本,则可以通过创建聚集列存储索引来同时使用聚集索引和列存储索引。不过,它确实有一些限制和开销,您应该仔细阅读。
鉴于这是对特定行的搜索而不是列的聚合,我建议使用聚集索引而不是列存储索引。
我们有一个巨大的 table 表 1(25 亿行),单列 A(NVARCHAR(255) 数据类型)。针对此 table 进行查找操作的正确方法是什么? A 上的聚集索引与 A 上的聚集列存储索引。
我们已经将此 table 保存在与另一个 table 表 2 不同的文件组中,它将与该文件组合并。
您是否建议对 table 进行分区以获得更好的性能?此列也将包含 unicode 数据。那么,哪种分区方法适用于 unicode 数据类型?
更新:为了进一步说明,table 的用例是 SEEK。 table 正在存储个人的标识符。这里主要关注的是在 table 巨大的情况下 SEEK 的性能。此 table 将在事务中引用。我们希望交易时间短。
聚集索引与列存储索引取决于 table 的用例。列存储跟踪列中的唯一条目以及存储这些条目的行。这使得它对于数据仓库任务非常有用,例如针对索引列进行聚合,但对于需要提取少量特定行的事务性任务来说并不是最佳选择。如果您使用的是 SQL Server 2014 或更高版本,则可以通过创建聚集列存储索引来同时使用聚集索引和列存储索引。不过,它确实有一些限制和开销,您应该仔细阅读。
鉴于这是对特定行的搜索而不是列的聚合,我建议使用聚集索引而不是列存储索引。