2012-12-09 4 views
0

다중 테넌트 애플리케이션에서 where account_id = ...은 (거의) 모든 쿼리에 추가됩니다. 거의 모든 테이블에는 account_id 열이 있습니다.테이블 인덱싱 및 기본 범위

이러한 설정에서 외래 키에 대한 테이블에 인덱스를 추가 할 때 항상 인덱스에 account_id를 포함해야합니까? 그래서 예를 들면

:

add_index 'projects', ["customer_id"] 
OR 
add_index 'projects', ["customer_id","account_id"] 

방법은 우리의 응용 프로그램은 ACCOUNT_ID에 조건없이 프로젝트 테이블에 쿼리를 실행하지 않습니다 설치, 그래서 두 번째 옵션이 올 것 기대. 하지만 나는 DB 전문가가 아닙니다.

우리의 경우 가장 좋은 방법은 무엇입니까?

답변

0

이는 특정 고객 ID 값에 대해 프로젝트 테이블에 존재하는 행 수에 따라 크게 다릅니다. 아마도 몇 백 개 이상을 가질 수 없다면 계정 Id 열을 추가해야겠습니까? 물론이를 확인하는 가장 좋은 방법은 색인의 유무에 관계없이 성능 테스트를하는 것입니다.