반응형
MySQL 쿼리의 여러 열 인덱스 이해
다음은 쿼리입니다.
SELECT * FROM table WHERE accountid = 1 ORDER BY logindate DESC LIMIT 1
필드에 여러 열이 있는 인덱스를 추가한 경우:
INDEX(accountid,logindate)
MySQL은 이 다중 열 인덱스를 활용할 수 있습니까?아니면 한 필드는 where 절에 있고 다른 필드는 주문서에 있기 때문에 사용하지 않는 것입니까?또는 다중 열 색인 순서로 필드를 사용하면 문제가 없습니까?
좋은 질문입니다.
인덱스는 왼쪽에서 오른쪽으로 동작하기 때문에WHERE
기준이 인덱스를 사용합니다.이 경우에는 지수를 활용한다(아래 실행 계획).
매뉴얼:
인덱스는 또한 다음 경우에도 사용할 수 있습니다.
ORDER BY
인덱스의 모든 미사용 부분과 추가 모든 부분이 인덱스와 정확하게 일치하지 않는 한ORDER BY
열은 의 상수입니다.WHERE
절을 클릭합니다.다음 쿼리는 인덱스를 사용하여 다음을 해결합니다.ORDER BY
부품:SELECT * FROM t1 WHERE key_part1=constant ORDER BY key_part2;
단일 열 인덱스가 있는 경우(accountid
대신 파일 정렬이 사용됩니다.따라서 쿼리는 해당 인덱스의 이점을 얻을 수 있습니다.
두 개의 열 색인
create table t1 (
accountid tinyint,
logindate date);
create index idx on t1 (accountid, logindate);
insert into t1 values (1, '2012-09-05'), (2, '2012-09-09'), (3, '2012-09-04'),
(1, '2012-09-01'), (1, '2012-09-26'), (2, '2012-05-16'),
(1, '2012-09-01'), (3, '2012-10-19'), (1, '2012-03-01')
실행 계획
ID SELECT_TYPE 테이블 유형 Possible_KEYS 키 키_LEN REF 행이 추가로 필터링되었습니다.1 단순 t1 ref idx idx 2 const 5 100 사용 장소, 색인 사용
단일 열 색인
create table t1 (
accountid tinyint,
logindate date);
create index idx on t1 (accountid);
insert into t1 values (1, '2012-09-05'), (2, '2012-09-09'), (3, '2012-09-04'),
(1, '2012-09-01'), (1, '2012-09-26'), (2, '2012-05-16'), (1, '2012-09-01'),
(3, '2012-10-19'), (1, '2012-03-01')
실행 계획
ID SELECT_TYPE 테이블 유형 Possible_KEYS 키 키_LEN REF 행이 추가로 필터링되었습니다.1 심플 t1 range idx idx 2 5 100 장소 사용, 파일 정렬 사용
언급URL : https://stackoverflow.com/questions/12728832/understanding-multiple-column-indexes-in-mysql-query
반응형
'source' 카테고리의 다른 글
MySQL Update 쿼리의 '필드 목록'에 알 수 없는 열이 있습니다. (0) | 2023.01.12 |
---|---|
도커가 PHP로 mariadb에 연결할 수 없습니다. (0) | 2023.01.02 |
MariaDB/MySQL 테이블 암호화 (0) | 2023.01.02 |
Concurrent Linked Queue 사용방법 (0) | 2023.01.02 |
Java에서의 통화 가치 표시 (0) | 2023.01.02 |