개발 Q&A

제목 DB 랜덤 출력 질문좀 하겠습니다.
글쓴이 니삼 작성시각 2012/11/22 16:21:31
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 16686   RSS
매번 랜덤으로 뿌려줘야하는 결과가 있습니다.
그래서 
where문에 order by rand()를 줬습니다. 

쿼리가 좀 길고 서브쿼리, 조인도 좀 있어서 인덱스주고 이것저것 해서

0.01초 짜리 만들어놨는데

랜덤주니까 모든 결과물을 랜덤으로 출력하느랴 엄청나게 느려져서

0.6초까지 떨어집니다 -_-;; 지금데이터가 2000갠대 이게 더 많아지면 많아질수록 느려질탠데

좋은방법 없을까요? 
 다음글 eclipse에서 open declaration이 안먹...
 이전글 현재 시간을 받아오는 방법? (2)

댓글

니삼 / 2012/11/22 16:26:47 / 추천 0
스스로도 질문 적으면서 해결방법이 있을까 했는대
역시 이 부분은 해결이 불가능 할것 같습니다 ㅋㅋ.. 
order by rand()가 모든 데이터를 건드려서 어쩔수가 없네요 느리더라도 어쩔수없겠내요
기획을 이렇게 했으니 ㅋㅋ
헛발이 / 2012/11/22 16:26:52 / 추천 0
깊게 생각하지 않았지만.....

그냥 한번에 0.01초로 한번만 불러오고
그걸 PHP로 배열에 넣고 배열랜덤으로 하는건 어떤지 ....

아니면 두번 랜덤하게 하는건 어떤지...
offset으로 구간을 랜덤으로 정한 다음에 그 구간만 랜덤으로 하면...
니삼 / 2012/11/22 16:27:46 / 추천 0
 헛발이//
페이징도 있어서 ㅋㅋ.. 조금 난감합니다 ㅠ-ㅠ..ㅋㅋ
니삼 / 2012/11/22 16:28:23 / 추천 0
서브쿼리 4개에 조인3개 걸려있는대
디비 설계를 다시하는게 더 좋을것같내요 ㅠㅠㅋㅋ;
변종원(웅파) / 2012/11/23 10:57:45 / 추천 0

유니크 번호가 있을테니 그걸 먼저 리스트로 가져오고 php 랜덤함수로 그중에서 번호를 가져와서
그 번호만 다시 select 하면 좀 빨라질 수 있을 겁니다.

귀찮기는 합니다만... ^^

니삼 / 2012/11/23 11:24:16 / 추천 0
웅파//
감사합니다. 그방법이 속도면에선 가장 빠를것 같습니다 ~
니삼 / 2012/11/29 08:59:12 / 추천 0
 이부분에 해결책을
Real MySQL이라는 책에서 찾았습니다. 비슷한 문제가 있으신분은 저책을 구..입..하세요 ㅋ
한대승(불의회상) / 2012/11/29 09:35:41 / 추천 0
니삼// 요약 발췌 부탁 드립니다. ^^
니삼 / 2012/11/29 10:26:58 / 추천 0
불의회상 // 저작권에 걸리지 않게 조심히 정리해서 올려보겠습니다