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
우리 시대에 가장 암울한 말이 있다면 "남 하는 대로" "나 하나쯤이야" "세상이 그런데". 우리 시대에 남은 희망이 있다면 "나 하나만이라도" "내가 있음으로 " "내가 먼저". (박노해)