사용자가 읽은 기사를 추적하는 기능을 구현하고 있습니다.
create_table "article", :force => true do |t|
t.string "title"
t.text "content"
end
이것은 지금까지 내 마이그레이션입니다.
create_table :user_views do |t|
t.integer :user_id
t.integer :article_id
end
user_views 테이블은 항상 하나만 검색하는 것이 아니라 두 열을 모두 찾기 위해 쿼리됩니다. 내 질문은 내 색인이 어떻게 생겼는지입니다. 이 테이블에 더 많은 옵션이 있거나 무엇이든이 테이블의 순서에 차이가 있습니까? 내 대상 DB는 Postgres입니다.
add_index(:user_views, [:article_id, :user_id])
감사.
업데이트 :
두 열에 동일한 값을 포함하는 행이 하나만 존재할 수 있기 때문에 (user_id가 article_id를 읽었는지 알기 때문에) : unique 옵션을 고려해야합니까? 제가 착각하지 않았다면 제가 직접 확인하지 않아도되며 사용자가 기사를 방문 할 때마다 삽입 만하면됩니다.
"user_views 테이블은 항상 하나의 열이 아닌 두 열을 모두 찾기 위해 쿼리됩니다." - "이 사용자가 본 모든 기사 찾기"또는 "이 기사를 본 모든 사용자 찾기"쿼리가 없을 것입니까? 나는 그게 놀랍다.
—
David Aldridge 2015 년