我正在使用Rails 4.0和Postgres,我有 my_records 表,如:
id -> Integer
data -> hstore
请注意,数据字段包含长哈希,如:
{ "key1" => "val1", "key2" => "val2", .....etc }
现在,当我尝试查询表格时(我在数据字段中有大约500,000条记录和大哈希),这需要很长时间:
MyRecord.where("data -> 'key1' = 'val1'")
现在我正在尝试使用以下方式索引数据字段:
add_index :my_records, :data, using: :gin
但是当我尝试运行迁移时,我收到此错误:
PG::ProgramLimitExceeded: ERROR: index row size 3112 exceeds maximum 2712 for index "index_my_records_on_data"
: CREATE INDEX "index_my_records_on_data" ON "my_records" USING gin ("data")
有任何帮助吗?
答案 0 :(得分:0)
看起来您的语法是正确的 - 您只是超出了GIN索引大小限制。该网站详细描述了该问题,并提供了一些替代方案:
http://sohu.io/questions/4826682/hstore-index-row-size-maximum-error
您可能还想退后一步,重新考虑您的设计。使用传统的NoSQL数据库可能会更好,特别是如果您的数据相对动态。
希望这有帮助。