am-*_*ils 5 postgresql indexing ruby-on-rails ruby-on-rails-4.1
我创建了一个答案表并向其中添加了以下索引:
add_index :answers, [:output, :question_id], unique: true
Run Code Online (Sandbox Code Playgroud)
该索引允许通过其输出和 Question_id 快速查找答案。在创建许多答案时,我收到以下错误:
PG::ProgramLimitExceeded:错误:索引行大小 3088 超过索引
“index_answers_on_output_and_question_id”的最大值 2712
提示:无法对大于缓冲区页 1/3 的值建立索引。
考虑值的 MD5 哈希值的函数索引,或使用全文索引。
我该如何解决这个问题?我可以将唯一性方面转移到模型中,但索引很重要。Rails 是否支持创建 MD5 哈希值?
这是 Postgres 引发的错误。它抱怨你应该索引 md5(giant_string) 或类似的东西(在你的情况下我想象一个answer_position字段),而不是直接giant_string,因为索引那么大的字符串不是那么有用。