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
셰익스피어는 그의 작품 대부분을 빵과 버터와 생활 경비를 얻기 위해 썼다. 처음부터 위대한 일을 계획하고 노력한 끝에 위대한 업적을 남긴 사람도 있지만, 사람의 일이란 늘 생활과 연결되는 법이다. (굴드)