최근에 mySQL 인덱싱을 읽었으며 다중 인덱싱에 대한 필자의 이해가 올바른지 알고 싶습니다. 나는 주로 InnoDB를 사용한다.다중 컬럼 대 다중 컬럼 인덱싱의 개념
SELECT * FROM tbl_test WHERE col1=X AND col2=Y
멀티 컬럼 인덱스
인덱스가 가정 :
CREATE INDEX idx_multi ON tbl(col1,col2,col3)
(가)
는나는 예를 들어 다음 쿼리를 사용합니다 전체 색인은 어떻게 든 연결됩니다 (가장 단순한 wo uld는 사이에 구분 기호를 추가해야합니다. 쉼표)를 작성하여 B- 트리에 직접 저장하십시오. B- 트리의 구조는 왼쪽에서 오른쪽으로 색인 검사를 강제합니다. (색인은 이제 문자열로 저장되기 때문에 < - 누군가가이 문제를 조사 할 수 있습니까?) 따라서 idx_multi
에 하나의 B- 트리 검색 만 있습니다. . 파서 모두 idx_col1
및 idx_col2
의 B-트리를 검색
CREATE INDEX idx_col3 ON tbl(col3)
는, 행 (2 개) 각각의 세트를 리턴
CREATE INDEX idx_col1 ON tbl(col1)
CREATE INDEX idx_col2 ON tbl(col2)
다중 단일 열 인덱스 결과를 얻으려면 INTERSECT
을 실행하십시오 (mySQL Inde x 병합 최적화). 이 경우 엔진은 추가 쿼리를 실행하기 전에 B- 트리 검색을 2 번 실행합니다.
또 다른 질문이 있습니다. 인덱스에 대한 B- 트리 구현의 경우 INT 인덱스 make가 VARCHAR 인덱스보다 효율적으로 검색합니까?
누군가 내 이해의 결함을 지적 할 수 있으면 감사하겠습니다.