그래서 this question, 대답 및 주석을 읽었지 만 열의 경우 수행 할 작업 인 내 사례에 응답하지 않습니다. 외래 키? ACCOUNT_ID 이후Rails 5.1 & Postgres - 외래 키일 때 두 개의 열에 고유 한 제약 조건 추가
class CreateTemplates < ActiveRecord::Migration[5.1]
def change
create_table :templates, id: :uuid do |t|
t.references :account, type: :uuid, foreign_key: true
t.string :name
t.text :info
t.string :title
t.timestamps
end
end
end
가 foreign_key (그리고 고객을 식별)이이 테이블에 거의 모든 (99 %) 쿼리 나타납니다
여기에 문제의 테이블을 만들 수있는 내 원래의 마이그레이션입니다.
는 지금은 이름이 계정에 고유해야한다고 결정했습니다, 그래서 모델이 업데이트되었습니다
validates_uniqueness_of :name, scope: [:account]
을 그래서 공동 인덱스 추가하면 :
add_index :templates, [:name, :account_id], unique: true
내가 삭제해야을 account_id에 대한 색인?
add_index :templates, [:account_id, :name], unique: true
: 나는 때문에 SQLLite (
this 참조)에 문의
, 대답은 내가 ACCOUNT_ID에 단일 인덱스를 필요로하지 않고 첫 번째 위치에 ACCOUNT_ID 내 새로운 인덱스를 만들 수 있다는 것 같다
나는 postgres를 사용하고 있으므로 같은 생각이 적용됩니까?
그러면 Postgres는 연결된 SQLite 예제와 같은 방식으로 작동합니다. 즉, account_id foreign_key 인덱스를 삭제하고 account_id를 첫 번째 인덱스로 사용하여 새로운 합성을 생성 할 수 있다는 것을 의미합니다. 데이터베이스에서 하나의 인덱스 만 업데이트해야하기 때문에 삽입 성능이 약간 향상 될 것입니다. – rmcsharry
그렇게 할 수는 있지만 코드에서 사용하는 방법에 따라 다릅니다. 먼저 'account_id'를 기반으로 검색 한 다음 코드의 어디서나 이름을 기반으로 한 다음 삭제할 수 있습니다. –
설명해 주셔서 감사합니다. – rmcsharry