데이터베이스 테이블에 대해 두 개의 쿼리가 있다고 가정합니다.부분 키와 데이터베이스 테이블의 인덱스에 대한 질문
에 Query1 :
쿼리
쿼리에 사용되는 필드의 관점에서 정의된다 F1, F2에 의존하고, F3QUERY2는 : F1, F2, F3 및 F4에 따라
SQL 쿼리 엔진 (이 경우에는 mySQL)이 인덱스의 가장 왼쪽 필드부터 시작하여 인덱스 트리를 구문 분석한다는 것을 기억합니다.
Index 1 (for Query1) : CREATE INDEX idx_1 {f1, f2, f3}
Index 2 (for Query2) : CREATE INDEX idx_2 {f1, f2, f3, f4}
단순히 두 쿼리에 사용되는 키의 조합을 포함하는 하나의 인덱스를 정의 할 수 있습니다 : - 즉 올바른 경우
, 그럼 내가 대신 같은 테이블에 정의 된 두 개의 인덱스를 가진의 가정 즉
나는 단지이 인덱스 정의 할 필요가:
:(for BOTH Query1) : CREATE INDEX the_idx {f1, f2, f3, f4}
내가이 개 질문을
내 가정이 맞습니까? 즉 이전의 두 인덱스 대신에 하나의 인덱스 (the_idx)를 정의 할 수 있습니까?
PostgreSQL 쿼리 엔진에서도이 인덱스 동작이 true로 유지됩니까?
이 가정은 다른 유형의 인덱스가 아니라 B-TREE에 관한 것입니다. Wikipedia에는 HASH, GIN, GIST, RED-BLACK 등의 정보가 있습니다. 데이터베이스의 매뉴얼도 참조하십시오. 인덱스의 구현에 대한 자세한 정보가 있습니다. –