我正在实现跟踪用户阅读的文章的功能.
create_table "article", :force => true do |t|
t.string "title"
t.text "content"
end
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的迁移:
create_table :user_views do |t|
t.integer :user_id
t.integer :article_id
end
Run Code Online (Sandbox Code Playgroud)
始终会查询user_views表以查找两列,而不仅仅查找一列.我的问题是我的索引应该是什么样子.这些表的顺序是否存在差异,是否应该有更多选项或其他.我的目标数据库是Postgres.
add_index(:user_views, [:article_id, :user_id])
Run Code Online (Sandbox Code Playgroud)
谢谢.
更新:
因为只有一行在两列中都包含相同的值(因为在知道user_id是否读过article_id时),我应该考虑:unique选项吗?如果我没有弄错,那意味着我不必自己进行任何检查,只需在用户访问文章时插入即可.