세 개의 테이블 :
product
: 열 포함 : ( a, g, ...a_lot_more... )
a: PK, clustered
g: bit-column
main
: 열 포함 : ( c, f, a, b, ...a_lot_more... )
c: PK, clustered
f: bit-column
(a, b): UQ
lookup
열이있는 : ( a, b, c, i )
(a, b): PK, clustered
a: FK to product(a)
c: UQ, FK to main(c)
i: bit-column
조인에 대한 좋은 인덱스를 찾을 수 없습니다.
FROM
product
JOIN
lookup
ON lookup.a = product.a
JOIN
main
ON main.c = lookup.c
WHERE
product.g = 1
AND
main.f = 1
AND
lookup.i = 1
AND lookup.b = 17
나는 커버링 인덱스를 시도했지만 product (g, a, ...)
사용되었지만 놀라운 결과는 아닙니다.
lookup
테이블 의 일부 인덱스 조합은 이전 계획에 비해 약간의 효율성 향상과 함께 인덱스 병합으로 실행 계획을 생성합니다.
내가 놓친 명백한 조합이 있습니까?
구조의 재 설계가 도움이 될 수 있습니까?
DBMS는 MySQL 5.5이며 모든 테이블은 InnoDB를 사용하고 있습니다.
테이블 크기 :
product: 67K , g applied: 64K
main: 420K , f applied: 190K
lookup: 12M , b,i applied: 67K