테스트 사이트 - 개발 중인 베타 버전입니다

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

신비나라 7년 전 조회 4,428

</p>

<p>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</p>

<p>

 

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

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

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
Rido
7년 전

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

신비나라
7년 전
먼저 rido님 바쁘신데 답변주셔서 대단히 감사합니다. 그런데 distance라는 컬럼이 실제로 존재하지는 않습니다. 쿼리문 보시면 distance는 거리를 측정하기위한 가상의 컬럼으로 보시면 됩니다. 다른방법은 없을까요....
R
Rido
7년 전
아.. 쿼리를 다시 확인해보니 그런거 같네요...
일단 위도경도를 비교하는거 같은 wr_13 , wr_14 이 두 필드를 index를 걸어보세요
아무래도 index를 걸어보면 order by시에 속도가 좋아질 수 있을것도 같네요

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인