선택한 * 테이블 제한 [오프셋]에서 행 | 행 오프셋된 오프셋
레코드의 지정 된 수를 반환 하는 SELECT 문을 강제로 제한 절을 사용할 수 있습니다. 도 하나 또는 두 개의 숫자 매개 변수를 허용합니다. 매개 변수는 정수 상수 여야 합니다. 두 개의 매개 변수를 감안할 때, 첫 번째 매개 변수는 레코드를 반환 하는 첫 번째 행의 오프셋을 지정 하 고 두 번째 매개 변수는 반환 될 행의 최대 수를 지정 합니다. 초기 레코드 줄 오프셋입니다 (1) 대신 0: 호환 PostgreSQL, MySQL 자습서 구문도 지원: 제한 # # 오프셋.
Mysql > 선택 *에서 테이블 한도 5, 10; 검색 레코드 행 6-15
검색 하려면 모든 행 행 오프셋에서 레코드 집합의 끝에, 1의 한 두 번째 인수를 지정할 수 있습니다.
Mysql > 선택 *에서 테이블 한도, 95-1; 96-마지막 레코드 행을 검색합니다.
하나의 인수를 제공 하는 경우에 그것은 반환 되는 레코드 행의 최대 수를 나타냅니다.
Mysql > 선택 * 테이블에서 제한 5; 레코드의 처음 5 행 검색
즉, 제한 n은 0, n을 제한 하는 것과 같습니다.
차이 사이 10을 제한 하 고 제한 9,1 note:
예를 들어:
1입니다.
선택 * Cyclopedia에서 어디 id > = (
(에서 최대 (ID)을 선택
ID 제한 90001 Cyclopedia 순서에서 ID를 선택
) TMP로
) 제한 100;
2입니다.
선택 * Cyclopedia에서 어디 id > = (
(에서 최대 (ID)을 선택
ID 제한 90000,1 Cyclopedia 순서에서 ID를 선택
) TMP로
) 제한 100;
또한 100 레코드, 1 문장 빠른 또는 2 문장 빠른 후 90000 걸릴?
1 문장 처음 90,001 레코드 시작 ID로 가장 큰 ID 값 중 하나를 수행 하 고 다음 신속 하 게 다음 레코드를 찾을 그것을 사용 하 여 하는 것입니다.
2 옵션은 하만 90000 레코드 1, 후 다음 다음 레코드를 찾을 시작 표시로 ID 값을가지고
1 문장 실행 결과 행 집합 (0.23) 초
2 문장 실행 결과 행 집합 (0.19) 초
사실, 2 문장은 다음과 같이 단순화 될 수 있다:
선택 * Cyclopedia에서 어디 id > = (
Cyclopedia 제한 90000,1에서 ID를 선택
) 제한 100;
최대 작업 없이 직접 번호 90000 레코드의 ID를 사용 하 여, 이것은 이론적으로 더 효율적인, 하지만 실제로 그것 거의 보이지 않습니다, 1 레코드를 반환 하는 위치 ID 그리고 최대 결과 얻으려면 일 필요는 없습니다 하지만 이것은 명확 하 고 명확 하 게, 뱀 그림의 발을 제거 하기 때문에.
상단 선택 * Cyclopedia에서 어디 id > = (
(에서 최고 90001 최대 (ID)을 선택
Cyclopedia id 순서에서에서 ID를 선택
) TMP로
)
하지만 구현 저장소 프로세스 또는 직접 코드 인지 병목은 항상 ms sql 상단 항상 반환 합니다 첫 번째 N 레코드는 데이터의 양과 깊은 수행에 많은 이점이 있다 수백만, 효율성 있을 것입니다 확실히 낮은. MySQL의 제한 달리, 경우:
Cyclopedia 제한 90000에서 ID를 선택
Cyclopedia 제한 90000,1에서 ID를 선택
결과:
90000 행 집합 (0.36) 초에
1 행 집합 (0.06) 초
Ms sql만 사용 선택 최고 90000 ID Cyclopedia 실행 시간에서 390ms 수 있습니다, 그리고 같은 수행 작업 시간 또한 MySQL 360ms 보다는 더 적은.
제한 오프셋 (offset) 때 레코드 작으면, 더 많은 시간을 기록 하는 오프셋은 더 작고, 더 나은 제한의 직접 사용. 큰 오프셋, 더 나은 후자.
1, 상대적으로 작은 시간 오프셋.
선택 * Yanxue8_visit에서 10,10 제한
여러 번 실행 0.0004 0.0005 사이 시간을 유지
선택 * Yanxue8_visit에서 어디 vid > (=
Vid 제한 10, 1 Yanxue8_visit 순서에서 Vid를 선택
)도 10
0.0005 0.0006, 사이 시간을 주로 0.0006 유지를 여러 번 실행
결론: 제한의 직접 사용 때 더 우수한 오프셋 작습니다. 이 디스플레이 하위에 대 한 이유입니다.
2. 오프셋은 큰.
선택 * Yanxue8_visit에서 10000,10 제한
이상의 0.0187 번 실행
선택 * Yanxue8_visit에서 어디 vid > (=
Vid 제한 10000,1 Yanxue8_visit 순서에서 Vid를 선택
)도 10
여러 번 실행 시간 0.0061만 전 1/3의 주위에 남아 있었다. 큰 오프셋, 더 나은 후자.
Mysql > 선택 *에서 테이블 한도, 95-1; 96-마지막 레코드 행을 검색합니다.