假设我有一个像这样的MySQL(InnoDB)表
CREATE TABLE Item (id INT, ..., score INT, INDEX (score));
由于应用程序逻辑,一切都以1的分数开始,不久之后每个项目将获得不同的分数(之后相对较少的冲突,因此非1值的索引应该相当平衡)。
这是一个写频表。我担心随着数据库的扩展,索引将被打破,特别是带有score=1
的项目桶。我不了解碎片和群集的全部含义,在我们实际扩展硬件之前,我无法正确测试。
有没有办法告诉MySQL不要将任何记录插入到这个给定特殊值的索引中?
对WHERE score=1
,"最难"永远不会有任何疑问。必填查询为SELECT ... WHERE score>lower_limit ORDER BY score
。
答案 0 :(得分:0)
您想使用Filtered Indexes
or Partial Indexes
。不幸的是there's no such an option in MySQL。
如果我必须这样做,我会创建一个名为Item_score
的第二个表,其中包含一个得分索引,并且只包含值大于1的Items。