반응형
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
반응형
'MySql' 카테고리의 다른 글
MySQL mysql에있는 경우 삭제 절차 (0) | 2020.10.23 |
---|---|
MySQL iPhone에서 MySQL 데이터베이스에 연결하는 방법은 무엇입니까? (0) | 2020.10.23 |
MySQL에서 제외하는 대안 (0) | 2020.10.23 |
MySQL의 경도 및 위도 내 쿼리 (0) | 2020.10.23 |
MySQL-DESC 별 Order by 그룹화 (0) | 2020.10.23 |
댓글