情况如下。有一张桌子,每月约有40 000 000行,24个月,所以我们说几乎有1亿行。每行都有一个时间戳列,并在此列上创建索引。 最常见的查询是特定月份的汇总数据 - 例如2016年1月。如果我们为每个月分配一个separete标识符,我们可以将其称为" idm"并且对于2016年1月使它等于1(2016年2月= 2等),在idm上创建索引,它会对查询性能比较WHERE语句有任何影响:
答案 0 :(得分:2)
如果您在timestamp
和建议的idm
列上有索引,则两者可能完全相同。这是一个近似的答案。如果where
子句中有其他条件,那么idm = 1
的性能会更好。它允许更多使用优化的方法。
但是,索引不是正确的方法。由于数据和查询的性质,您应该考虑表分区。这将允许每个月的数据分开存储。您可以阅读有关表格分区here的信息。
如果您不想对表进行分区,我建议将idm
或timestamp
作为聚簇索引。这将有助于查询,甚至where子句在表中选择相对较高比例的行。