mysql 페이징 예제

Sem imagem cadastrada

쇼 프로세스 리스트 트릭은 매우 옳지 않다 : 그것은 또한 헤더 라인을 계산합니다. 나는 다음과 같이 수정 : mysql> 호출기 grep -v `-\-`| grep -v ” ID [|] *사용자” | awk -F `|` `{인쇄 $6}` | 정렬 | 유니크 -c | 정렬 -r 페이지 는 `grep-v `-\–`로 설정 | grep -v ” ID [|] *사용자” | awk -F `|` `{인쇄 $6}` | 정렬 | 유니크 -c | 정렬 -r`mysql> 쇼 프로세스 목록; 5 절전 2 연결 1 쿼리 8 행 세트 (0.00 초) 내 데이터베이스 클래스와 함께, 나는 상대적으로 작은 데이터 세트에 사용할 수있는 또 다른 약간 다른 접근 방식을 게시했습니다,하지만 실제로 인덱스를 사용할 수없는 곳 – 예를 들어 검색 결과. 일반적인 서버에서 다음 쿼리는 2M 레코드로 약 2초가 걸렸습니다. 백그라운드에서 이 쿼리를 사용하여 캐시를 생성하거나 작은 데이터 집합에서 말했듯이 이 쿼리를 사용할 수 있습니다. 제한된 결과 집합에서도 더 높은 동시성을 달성할 수 있어야 합니다. 접근 방식은 매우 간단합니다. 그러나 동적으로 생성 된 임의의 열로 결과를 정렬하는 경우이 살펴 보십시오: 예를 들어 mysql> 선택 1; 3ec930f74d6ec7bd7aa854440835 – 세트의 1열(0.00초) 두 번째 페이지 또는 다른 두 행을 얻으려면 아래 예제에서 OFFSET를 사용해야 합니다. 약 15% 이상의 편차가 있습니다. 마크 칼라간은 새로운 추정_COUNT() 함수로 InnoDB에 대한 빠른 COUNT 함수를 구현할 것을 제안했습니다. 나는 파서가 이미 DISTINCT 수정자를 가지고 있고 다른 플래그가 매우 자연스럽게 보이기 때문에 파서를 수정해야하는 경우 그의 접근 방식을 선호하는 COUNT (ESTIMATE *)를 보게되어 기쁩니다. learnmysql라는 이름의 새 데이터베이스를 만들고 이 쿼리를 실행합니다(노래라는 테이블을 만들고 작업할 샘플 데이터를 채우고 있음): mysql> 호출기 md5sum PAGER을 `md5sum` mysql으로 설정함] pkCaseId가 있는 tblCase에서 pkCaseId를 선택합니다. e8f6937bca3138aa2d0439a049a045a146 – 1열 세트(0.01초) 이 접근 방식은 여전히 페이징을 사용하기 때문에 이전 행과 매우 유사하지만 이제는 스캔한 레코드 수에 의존하는 대신 최신 방문한 레코드의 user_id를 오프셋으로 사용합니다. 그것은 MySQL 페이지 의 주제에 정말 좋은 기사입니다.

이 프레젠테이션을 추가하긴 하지만 http://www.slideshare.net/suratbhati/efficient-pagination-using-mysql-6187107 MySQL 5.6은 SQL_CALC_FOUND_ROWS에 대한 제한 최적화를 추가했습니다.