mysql index의 order by desc 문제
컨텐츠 정보
- 12,416 조회
- 0 추천
- 목록
본문
문제:
mysql에서 order by desc를 사용하면 성능이 급격히 낮아지는 경우가 있는데,
이유는 index를 역순으로 저장하는 방식을 mysql은 지원하지 않기 때문이다.
그래서 (key1 desc, key2 asc)와 같은 결합인덱스를 생성할 때 문제가 발생할 수 있다.
문제 해결책 :
이런 문제를 해결하는 방법은 정렬 column 값에 -1을 곱해서 table에 넣어버려서 추후 order by asc로 해결하는 패턴을 많이 사용한다.
심화문제 :
하지만
desc 정렬 column이 auto_increment로 생성되는 값이라면 조금 더 복잡해진다.
심화문제 해결책 1 :
매우 제한적인 상황에서 통할 수 있는 엽기적인 방법인데 session variable 중 auto_increment_increment의 값을 -1로 해버리면 해결되는 경우가 있다.
심화문제 해결책 2 :
last_insert_id()를 사용하는 방법으로 -1*(last_insert_id()+1) 으로 auto_decrement를 구현한다.
https://blog.naver.com/lipaz/100047320100
[출처] mysql index의 order by desc 문제|작성자 천재민
관련자료
-
링크
댓글 0
등록된 댓글이 없습니다.