limit가 속도저하를 갖어 올 수 있다는 포스트를 봤습니다 정보
limit가 속도저하를 갖어 올 수 있다는 포스트를 봤습니다
본문
요즘 DB 검색 쿼리에 관심이 많아졌습니다.
관심만큼 꾀나 복잡합니다.
그동안은 소규모 업체들만 상대하나보니 대규모 DB를 다룰 일이 없어 함수나 명령어 선택에 큰 고민이 없었습니다.
예전에 관공서 프로젝트에서 큐브리드가 10만건의 레코드에서 버벅댔을 때는 내가 언제 또 이만한 프로젝트를 하겠냐 싶어 임기응변으로 대처했던 적이 있긴 합니다. (큐브리드 문제가 아니라 제가 검색 알고리즘에 크게 신경을 안썼었습니다.)
정렬 조건에서 desc와 asc, 과연 얼마큼의 속도 차이가 있을까요?
mySQL 4.2 이하 버전에는 확연한 차이가 있는 스뮬레이션을 확인 했습니다.
5.2 이상에서는 5만건의 레코드로 실험 했을 때 거의 차이가 없다는 포스트도 봤습니다.
phpschool에서 관련 글을 읽어 보면 5.2이상에서는 desc 와 asc의 속도 차이는 없다는 쪽으로 의견이 모아지는거 같습니다.
그러나 시뮬레이션을 통한 과학적(?)인 자료를 보고 싶은데 영어가 짧은 관계로 찾기가 어렵네요.
또 하나는 limit로 레코드 구역을 지정할 때 속도 저하가 있다는 포스트를 봤습니다.
limit를 즐겨 쓰던(또 limit가 DB 부하를 줄여 줄 수 있다고 믿던) 저에게 이건 고민거리입니다.
limit 의존도가 높던 저에게 이 조건문이 실제로 검색 속도에 악영향을 줄 수 있다는 블럭 단위로 레코드를 읽어 올 때 대안을 떠올리기가 어렵습니다.
이 부분 그누人들의 의견은 어떠신지요.
**
오늘 관리자님이 포인트경매 폐지를 번복하셨네요.
폐지한다고 잔여 포인트 얼른 써버리라고 하셔서 불판이랑 모니터 나왔을 때 올인 했는데 낙찰도 안되고 포인트도 다 날리고 그지 된 기분입니다.
포인트를 1% 그누人들에게 몰아주기 위한 음모가 있었던 것으로 추정됩니다.
저는 이제 99%입니다. ㅎㅎ
추천
0
0
댓글 6개

이것과 관련하여 MySQL 성능최적화란 책을 보시면 궁금한점이 일정부분 해소가 될겁니다.

그리고 MySQL에서 인덱스 쓰시는 분 계신가요?
옛날에 DBIII+, 클리퍼, Access를 쓸 때는 DB 생성 시 인덱스도 함께 생성하는게 일반적이였는데 MySQL로 넘어 오면서 인덱스 생성을 하지 않고 있습니다.
검색이 빈번한 필드에 대해서는 인덱스 생성이 좋을거 같은데 다른 분들의 생각은 어떠신지요.
옛날에 DBIII+, 클리퍼, Access를 쓸 때는 DB 생성 시 인덱스도 함께 생성하는게 일반적이였는데 MySQL로 넘어 오면서 인덱스 생성을 하지 않고 있습니다.
검색이 빈번한 필드에 대해서는 인덱스 생성이 좋을거 같은데 다른 분들의 생각은 어떠신지요.

테이블끼리 연결해야 하는 경우 및 검색이 필요한 곳에는 무조건 인덱스를 쓰고 있습니다.
적용 전과 후가 비교 불가능할 정도로 차이가 큽니다.
적용 전과 후가 비교 불가능할 정도로 차이가 큽니다.

2쇄부터 수정 했습니다. ㅋㅋㅋ

오늘 관리자님이 포인경매 폐지를 번복하셨네요.(3)
01. 총 10만개의 게시물이 있는 게시판.
02. 게시판 한페이지에 10개씩 출력.
03. 검색 조건이 없음.
위 상황일때
첫 페이지는 limit 0,10 (빠릅니다)
마지막 페이지는 99990, 10 (느립니다)
마지막 페이지가 느린것은 99990 을 카운트 한후 10개를 가져오기 때문입니다.
limit 연산자 사용시 위의 99990 을 어떻게 줄이느냐가 중요한 포인트가 됩니다.
즉 limit 가 속도저하를 가져오는것이 아니라 limit 를 효율적으로 사용하지 못하면 속도저하가 올수 있습니다.
02. 게시판 한페이지에 10개씩 출력.
03. 검색 조건이 없음.
위 상황일때
첫 페이지는 limit 0,10 (빠릅니다)
마지막 페이지는 99990, 10 (느립니다)
마지막 페이지가 느린것은 99990 을 카운트 한후 10개를 가져오기 때문입니다.
limit 연산자 사용시 위의 99990 을 어떻게 줄이느냐가 중요한 포인트가 됩니다.
즉 limit 가 속도저하를 가져오는것이 아니라 limit 를 효율적으로 사용하지 못하면 속도저하가 올수 있습니다.