假设我的Solr架构中有一个字段,其值为1,2,3或4.我对此字段不进行算术运算。该字段是记录的状态。它可以很容易地成为A,B,C或D.11,000,000个记录中的每一个都具有这些状态之一。
在this question中,答案说整数是“更节省内存”,所以这是一个开始。还有其他因素需要考虑吗?一个匹配比另一个快吗?
此字段不会被排序。这些值是任意的,我们永远不会进行排序。它只会用于过滤查询。
答案 0 :(得分:6)
你会查询一个范围吗?因此,如果您的1 ... 4真的标记为Bad to Great的状态,您是否会查询1-2的记录?这是你可能需要它们成为唯一的东西(而且,因为你只有4个,所以这不是什么大不了的事。)
我在数据存储方面的规则是,如果int永远不会被用作int,那么将它存储为字符串。它可能需要更多的空间等,但你可以做更多的字符串操作等。如果一个字段是字符串或int(11m是很多记录,但不是重负载),11m记录的内存要求可能无关紧要对于Solr / Lucene)。
答案 1 :(得分:3)
只有4个不同的值,int和String对于过滤查询,排序甚至范围查询的执行效果非常相似。