인프런 커뮤니티 질문&답변
특정 컬럼 정렬시, 한글이 숫자와 영문 다음으로 정렬이 되는데, 한글이 우선적으로 정렬되게 할때, 콜레이션을 사용하는 것이 권장되나요?
작성
·
36
·
수정됨
0
한글이 영어,숫자 보다 먼저 정렬되도록 하고 싶습니다.
해당 컬럼에는 한글이 주로 많이 있습니다.
오름차순 정렬시
한글(가나다),영문/숫자/그외문자 순으로
정렬
현재 사용하는 것은
쿼리단에서 정규식을 이용해서 한글을 우선순위를 높여서
정렬을 시키는데 뭔가 비효율적인것 같습니다.
콜레이션을 변경하면 가능할까요?
콜레이션을 변경하는 것을 추천하나요?
그렇다면 어떤식으로 콜레이션을 적용하는게 좋을까요?
해당 컬럼에만 적용하기?
쿼리에서 정렬에 콜레이션을 명시하는 방법?
어떤 방법을 권장하나요?
콜레이션을 임의로 변경 시 문제점이나 유의사항이 무엇이 있을까요?
참고로 mysql8 사용중이고,
utf8mb4_ko_0900_as_cs 으로 변경을 고려중입니다.
해당 컬럼은 영어,숫자,한글이 들어가고, 주로 한글이 많습니다. 그리고 유니크한 컬럼입니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
우하하하헤헤님께서 질문해주신 내용에 대해 답변드리겠습니다.
MySQL에서 한글이 영어, 숫자보다 우선적으로 정렬되게 하려면 콜레이션을 변경하는 것이 상당히 효과적입니다. utf8mb4_ko_0900_as_cs 콜레이션을 고려 중이라고 하셨는데, 이 콜레이션은 한글 정렬을 지원하며, 지정하신 대로 변경하신다면 자연스러운 한글 정렬이 이루어질 것입니다.
권장하는 방법
해당 컬럼에만 콜레이션 적용: 데이터베이스 전체 콜레이션을 변경하는 것보다, 해당 컬럼에만 콜레이션을 적용하는 것이 나을 수 있습니다. 이렇게 하면 다른 데이터에 미치는 영향을 최소화할 수 있습니다.
쿼리에서 콜레이션 명시: 정렬이 필요한 경우, 쿼리에서
ORDER BY절에 특정한 콜레이션을 명시하여 사용하면 유연하게 적용할 수 있습니다. 이를 통해 운영 중인 데이터베이스 스키마에 미치는 영향을 최소화할 수 있습니다.
유의점 및 문제점
유니크 제약사항: 콜레이션 변경 시, 문자열 비교 방식이 달라지므로, 유니크 제약조건이 위배될 수 있습니다. 따라서, 변경 전 기존 데이터와 변경 후 데이터가 동일한 유니크 제약조건을 유지할 수 있는지 검토가 필요합니다.
퍼포먼스: 대량의 데이터가 있는 경우, 콜레이션을 변경하게 되면 정렬 시 퍼포먼스에 영향을 미칠 수 있습니다. 콜레이션 변경 후 쿼리 퍼포먼스를 모니터링하는 것이 좋습니다.
MySQL 문서 및 여러분의 데이터베이스를 테스트 환경에서 충분히 테스트하여 적절한 방법을 선택하시길 권장드립니다. 사용하시는 환경에 맞게 적용해 보세요.
추가적인 도움이 필요하시면 언제든지 문의해 주세요! 😊
참고 URL(기본적으로 참고한 사이트 예제)
- MySQL 8.0 Reference Manual - Collation




