ID가 범위로, 코드가 해시로 분할 된 테이블이 있습니다 (둘 다 정수입니다). 30 개의 파티션, 각각 4 개의 해시 하위 파티션, 총 120 개의 하위 파티션.MySQL에서 쿼리의 하위 파티션을 무시합니다.
혼자 ID에 선택을 할 경우, 계획을 설명은 제대로 만 파티션에 관련된 &에 서브를 치기 있다고 보여줍니다 (4) 나는 ID + 코드에 선택을 할 경우, 계획 프로그램을 설명
그것은 올바르게 관련된 하나 개의 특정 하위 분할로 내려 치기 있다는 (1)
그러나이...
나 혼자 코드에 선택을 할 경우, 계획은 MySQL이 전체 테이블을하고 있음을 보여주는 것 같다 설명 오라클과 같이 행동하고 각각의 하나의 하위 파티션 만 스캔하는 대신 (120 개의 파티션) 스캔 관련성이있는 파티션 (총 30 개).
MySQL이 전체 파티션을 제거하지 못할 때 서브 파티션 프 루닝을 활용하려면 특별한 것을해야합니까? 또는 MySQL (5.1 이상)이 자체적으로 하위 파티션을 사용하는 것을 지원하지 않습니까?
어떤 엔진 유형을 사용하고 있습니까? – Johan
InnoDB – Bitbang3r
매우 흥미 롭습니다. innoDB가 해시 키를 사용하지 않기 때문에 나는 혼란 스러웠다. 그러나 B + 트리에 저장된 계산 된 해쉬를 의미하는 것 같다. – Johan