Database

mysql index의 order by desc 문제

페이지 정보

본문

문제: 

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 문제|작성자 천재민

관련자료

등록된 댓글이 없습니다.
Today's proverb
해가 들면 어떻고, 바람이 불면 어떻고, 눈이 오면 어떠랴. 해가 들어주어도 고맙고, 바람이 불어주어도 고맙고, 눈이 와주어도 고마울 뿐. 그렇다, 고맙지 않은 것이 없다. 밤은 밤이어서 고맙고, 새벽은 새벽이어서 고맙고, 낮은 낮이어서 고맙다. 아, 고마운 삼라만상이여! (정채봉)