반응형
효과에 대한 질문이 있습니다.
SELECT t3.id, a,bunch,of,other,stuff FROM t1, t2, t3
WHERE (associate t1,t2, and t3 with each other)
GROUP BY t3.id
LIMIT 10,20
이 쿼리가 LIMIT없이 반환되는 많은 총 행을 알고 싶습니다 (따라서 페이지 매김 정보를 표시 할 수 있음).
일반적으로 다음 쿼리를 사용합니다.
SELECT COUNT(t3.id) FROM t1, t2, t3
WHERE (associate t1,t2, and t3 with each other)
GROUP BY t3.id
그러나 GROUP BY는 COUNT의 의미를 변경하고 대신 각 그룹의 고유 한 t3.id 값 수를 나타내는 행 집합을 얻습니다.
GROUP BY를 사용할 때 총 행 수를 계산하는 방법이 있습니까? 값이 페이지가 매겨지기 때문에 행의 하위 집합 만 필요하기 때문에 전체 쿼리를 실행하고 행 수만 계산하는 것을 피하고 싶습니다. 나는 MySQL 5를 사용하고 있지만 이것은 꽤 일반적이라고 생각합니다.
해결 방법
MySQL에는 좋은 솔루션이 있습니다.
키워드 SELECT 바로 뒤에 SQL_CALC_FOUND_ROWS 키워드를 추가합니다.
SELECT SQL_CALC_FOUND_ROWS t3.id, a,bunch,of,other,stuff FROM t1, t2, t3
WHERE (associate t1,t2, and t3 with each other)
GROUP BY t3.id
LIMIT 10,20
그런 다음 FOUND_ROWS () 함수를 사용하여 다른 쿼리를 실행합니다.
SELECT FOUND_ROWS();
LIMIT 절이없는 행 수를 반환해야합니다.
참조 페이지 https://stackoverflow.com/questions/364825
반응형
'MySql' 카테고리의 다른 글
MySQL Rails는 무작위 레코드를 선택합니다. (0) | 2020.11.08 |
---|---|
MySQL의 플러시 권한은 언제 정말로 필요합니까? (0) | 2020.11.08 |
MySQL 이름이 모음으로 시작하고 끝나는 지 확인하는 SQL 쿼리 (0) | 2020.11.08 |
MySQL Workbench에서 열 플래그는 무엇을 의미합니까? (0) | 2020.11.08 |
MySQL 동일한 열 값을 가진 mysql 행을 하나의 행으로 그룹화하는 방법은 무엇입니까? (0) | 2020.11.08 |
댓글