Avi*_*Avi 5 columnstore sql-server-2017
聚集列存储索引表通常对大型表很有用。理想情况下有数百万行。并且对于查询也很有用,它仅选择此类表中可用列的子集。
如果我们打破这两个“规则”/最佳实践会发生什么?
与行存储的聚集索引表相比,我的测试没有显示任何性能下降。这在我们的案例中很棒。
是否有违反这两条规则的“长期”影响?或者任何尚未出现的隐藏陷阱?
上下文为什么需要它:我设计了一个数据库模型,它将用于不同供应商数据库的许多实例。每个数据库中的模式保持不变,但不同的供应商具有不同的数据量。因此,很少有小供应商可能会在他们的表中得到少量数据(<1 000 000)。我不能让自己为行存储和列存储模型保留两个不同的数据库。
@YunusUYANIK 指出设计模式仅迎合一方面的潜在缺陷,为什么不在表上创建行存储和列存储索引以适当地满足这两种情况呢?当然,您最终可能会以两种方式对相同的字段建立索引,但主要缺点是会增加存储空间的使用,这在规划性能时通常不那么重要。
它将取决于您的架构和表中每个供应商的数据量,因此您必须进行测试以确保您的索引设计用于基于供应商谓词的不同数据量的适当查询中。在最坏的情况下,有时您可能也必须使用索引提示,但我觉得如果您正确设计这两种类型的索引,那不太可能。