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