情况如下。有一个每月约40000行的表格,乘以24个月,所以我们可以说,差不多有1000 000行。每一行都有一个时间戳列,该列上创建了索引。大多数频繁的查询都是将特定月份的数据进行汇总的一次查询,例如2016年1月。如果我们为每个月分配一个分隔标识符,让我们将其称为" idm“,对于2016年1月使其等于1(2016年2月=2等等),在idm上创建索引,它会对查询性能产生什么影响,比较哪个语句:
发布于 2016-07-01 10:42:03
如果在timestamp和建议的idm列上有索引,那么两者可能是相同的。这是一个大致的答案。如果where子句中有其他条件,那么idm = 1的性能会更好。它允许使用更多的优化方法。
然而,索引并不是正确的方法。由于数据和查询的性质,您应该考虑表分区。这将允许每个月的数据单独存储。您可以阅读有关表分区这里的内容。
如果不想对表进行分区,我建议将idm或timestamp作为聚集索引。这将有助于查询,甚至where子句也会在表中选择相对较高比例的行。
https://stackoverflow.com/questions/38142642
复制相似问题