我有一个名为“Votes”的多态表,其中有来自 Answers 和 Questions 的投票。
投票
user_id voteable_id voteable_type value
1 2 Answer 1
2 2 Answer 1
在这种情况下,id = 2 的答案有两票赞成。
问题是:如何索引这个表?
第一种方法:
add_index :votes, [:voteable_id, :voteable_type]
这不起作用,因为重复的键值将违反唯一约束
第二种方法:
add_index :votes, :voteable_id,
add_index :votes, :voteable_type
我猜这个不会有太多性能,因为同时对 id 和 type 进行复合查询。
第三种方法:
add_index :votes, [:user_id, :voteable_id, :voteable_type]
最后一张好看吗?三列是否要索引太多?
谢谢