작성
·
54
·
수정됨
0
https://jscode.notion.site/661a5bcd11c74b4c97520460dbc4a328
주의 사항 2에서요. 정렬을 자세히 잘 살펴보면 이름 기준으로 정렬이 되어 있지는 않다. 왜냐면 같은 부서를 가진 데이터끼리만 정렬을 시켰기 때문이다. 실제로 아래 SQL문을 실행시킬 때 인덱스를 활용하지 못한다.
윗 부분에 말 뜻이. 처음부터 이름 순으로 정렬이 안되어있어서 멀티컬럼인덱스가 사용이 어렵다는 말씀인가요?
즉 아래 컬럼 처럼 안되어 있어서 멀티 컬럼인덱스가 적용이 안된다는 말씀인가요?
부서 | 이름 | 순위
----------------------
회계 | 김미현 | 2
회계 | 김민재 | 3
인사 | 하재원 | 6
운영 | 이재현 | 4
운영 | 조민규 | 5
인사 | 최지우 | 7
회계 | 박미나 | 1
답변 2
0
안녕하세요 zzzzz님! 멀티 컬럼 인덱스 공부하시다가 질문 주셨군요~!!
(부서
, 이름)
컬럼을 멀티 컬럼 인덱스로 설정하게 되면
부서
를 기준으로 먼저 데이터를 정렬시키기 때문에
데이터가 이름
을 기준으로 정렬이 되어 있지 않게 됩니다!
말씀해주신 예시에서 (부서, 이름)
멀티 컬럼 인덱스를 걸게 되면
아래와 같이 정렬이 될거에요!
부서 | 이름 | 순위
----------------------
운영 | 이재현 | 4
운영 | 조민규 | 5
인사 | 최지우 | 7
인사 | 하재원 | 6
회계 | 김미현 | 2
회계 | 김민재 | 3
회계 | 박미나 | 1
부서
를 ㄱㄴㄷ순으로 정렬했을 때 운영
-> 인사
-> 회계
의 순서로 구성되어야 합니다.
그리고 같은 부서 내에서 이름을 ㄱㄴㄷ순으로 정렬했을 때 위와 같이 데이터를 정렬하게 됩니다.
위 설명을 보시고 아직까지 이해가 안 되시는 부분이 있으시다면
편하게 댓글 또 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. zzzzz님께서 질문하신 멀티 컬럼 인덱스 적용에 관한 내용에 대해 답변 드리겠습니다.
멀티 컬럼 인덱스는 여러 열을 결합하여 인덱스를 만드는 방법으로, 특정 쿼리를 최적화하는 데 도움을 줍니다. 주의 사항에서 언급된 “정렬” 부분은 ‘indexing의 순서와 실제 데이터의 정렬 여부’에 관한 설명입니다.
정렬 관점: 멀티 컬럼 인덱스를 사용할 때, 쿼리가 정확히 인덱스의 순서(예: 부서, 이름)로 조건을 사용하면 효과적으로 인덱스를 활용할 수 있습니다. 그러나 첫 번째 정렬 기준인 부서
기준으로만 정렬되고, 이름
기준까지 선순위를 맞추지 않으면 인덱스가 의도한 대로 사용되지 않을 수 있습니다.
인덱스 활용: 예를 들어, 부서
와 이름
순으로 멀티 컬럼 인덱스를 생성했다면, 쿼리의 WHERE 절이나 ORDER BY 절에서 부서
를 먼저 사용하고, 그 다음에 이름
을 같이 사용하여 활용해야 제대로 된 성능 향상이 가능합니다. 그렇지 않으면 인덱스의 이점이 감소할 수 있습니다.
질문하신 내용처럼 인덱스 적용에서 중요한 것은 쿼리와 인덱스가 동일한 조건과 순서로 매칭되어야 한다는 점입니다. 이는 옵티마이저가 인덱스를 효율적으로 사용할 수 있도록 도와줍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
쌤 . 아래 코드는 이름순으로 정렬한 인덱스가 있거나 멀티컬럼인덱스(이름,부서순인) 가 있어야 하는데 없기때문에 아래 코드는 users 테이블에서 인덱스를 사용하지 않고 테이블을 조회(풀 스캔)을 하는건가요?
SELECT * FROM users
WHERE 이름 = '이재현';