본문 바로가기
MySql

MySQL에서 숫자로 varchar 필드 정렬

by 베이스 공부 2020. 10. 23.
반응형

varchar 유형의 number 필드가 있습니다. varchar 유형이지만 선택적 선행 0과 함께 정수 값을 저장합니다. 정렬은 사전 순으로 정렬합니다 ( "42" "9" 앞에 옴). 숫자 값 ( "42" 앞에 오는 "9")으로 정렬하려면 어떻게해야합니까?

현재 나는 쿼리를 사용합니다.

SELECT * FROM table ORDER BY number ASC

 

해결 방법

 

이를 수행하는 몇 가지 방법이 있습니다.

대부분의 데이터베이스는 작성된 것보다 훨씬 더 자주 읽히므로 위의 세 번째 옵션은 모든 선택에 대한 계산 비용 ( insert / update 에서 수행됨)을 부담합니다. 선택 항목은 순서에 숫자 열을 사용하기 때문에 눈부시게 빠릅니다 (행별 함수 없음).

귀하의 삽입물과 업데이트는 더 느리지 만 그것이 귀하가 지불하는 대가이며 솔직히 지불 할 가치가 있습니다.

트리거를 사용하면 두 열이 단계적으로 유지되므로 테이블의 ACID 속성이 유지됩니다. 그리고 대부분의 성능 최적화에서 시간과 공간을 대체 할 수있는 잘 알려진 관용구입니다.

우리는이 "속임수"를 원본과 함께 소문자 버전의 성을 저장 ( tolower 와 같은 것을 사용하는 대신), 식별하는 문자열의 길이를 사용하여 모든 사용자를 찾는 등 많은 상황에서 사용했습니다. -문자 1 ( len 을 사용하는 대신) 등등.

결과를 이해하고 완화한다면 성능을 위해 세 번째 정규 형식에서 되 돌리는 것이 좋습니다.

 

참조 페이지 https://stackoverflow.com/questions/4686849

 

 

반응형

댓글