我可以阻止MySQL索引特定值吗?

时间:2016-06-23 13:28:56

标签: mysql

假设我有一个像这样的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

1 个答案:

答案 0 :(得分:0)

您想使用Filtered Indexes or Partial Indexes。不幸的是there's no such an option in MySQL

如果我必须这样做,我会创建一个名为Item_score的第二个表,其中包含一个得分索引,并且只包含值大于1的Items。