여러 무작위 결과를 얻기 위한 대안 탐색
MySQL의 ORDER BY RAND() 함수는 무작위 결과를 직접 얻을 수 있는 방법을 제공하지만, 무작위 데이터의 여러 행을 효율적으로 선택할 수는 없습니다. 이 문서에서는 이러한 쿼리를 최적화하는 대체 기술을 살펴봅니다.
최적화 솔루션: 인덱스 열 및 하위 쿼리 사용
임의의 결과를 찾는 쿼리의 경우 성능 최적화가 중요합니다. 잘 작동하는 혁신적인 접근 방식 중 하나는 인덱싱된 열과 하위 쿼리를 조합하여 사용하는 것입니다. 이 기술은 무작위화 프로세스를 특정 조건으로 격리하여 처리 오버헤드를 크게 줄입니다.
단계:
예:
다음 쿼리를 고려해 보세요.
<code class="language-sql">SELECT u.id, p.photo FROM users u, profiles p WHERE p.memberid = u.id AND p.photo != '' AND (u.ownership=1 OR u.stamp=1) ORDER BY RAND() LIMIT 18 </code>
최적화된 쿼리:
<code class="language-sql">SELECT g.* FROM table g JOIN (SELECT id FROM table WHERE RAND() < (SELECT ((4 / COUNT(*)) * 10) FROM table) ORDER BY RAND() LIMIT 4) AS z ON z.id= g.id</code>
장점:
참고:
이 최적화 방법은 하위 쿼리와 기본 쿼리 간의 일관성에 의존하여 정확한 결과를 반환합니다. 또한 무작위 결과 비율에 대해 합리적인 한도를 선택하면 성능을 유지하는 데 도움이 될 수 있습니다.
위 내용은 ORDER BY RAND()를 사용하지 않고 MySQL에서 여러 무작위 행을 효율적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!