order by 속도문제입니다. 방법이 없을까요?

order by 속도문제입니다. 방법이 없을까요?

QA

order by 속도문제입니다. 방법이 없을까요?

본문


select *, ROUND( 6371*acos(cos(radians(36.889923))*cos(radians(wr_13))*cos(radians(wr_14)-radians(126.645815))+sin(radians(36.889923))*sin(radians(wr_13))),2) AS distance from g5_talk_write_coupon where wr_is_comment = 0 order by distance limit 0, 15

 

위와같이 본인의 위치를 받아서 기존테이블에 있는 위도, 경도값을 비교하여 가까운 거리별로 뿌려주는 쿼리인데 order by distance를 쓰면 데이터가 입력중인건 꼴랑 6건인데 쿼리실행속도가 어마어마합니다. 

order by wr_num을 쓰면 바로 실행이되는데 order by distance를 쓰면 페이지가 안열릴정도입니다.

 

내위치가 유동적이라 임의로 여분필드에 업데이트할수도 없고 어떤방법으로 써야 제대로된 속도를 낼수있을까요 고수님들 답변 좀 부탁드리겠습니다. ㅠ.ㅠ

이 질문에 댓글 쓰기 :

답변 1

distance 컬럼에 index가 걸려있는지 확인해 보시고 

index가 걸려있지 않다면 index를 걸어서 사용해 보세요

먼저 rido님 바쁘신데 답변주셔서 대단히 감사합니다. 그런데 distance라는 컬럼이 실제로 존재하지는 않습니다. 쿼리문 보시면 distance는 거리를 측정하기위한 가상의 컬럼으로 보시면 됩니다. 다른방법은 없을까요....

아.. 쿼리를 다시 확인해보니 그런거 같네요...
일단 위도경도를 비교하는거 같은 wr_13 , wr_14 이 두 필드를 index를 걸어보세요
아무래도 index를 걸어보면 order by시에 속도가 좋아질 수 있을것도 같네요

답변을 작성하시기 전에 로그인 해주세요.
전체 123,532 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT