MySQL도 최적화 방법 및 자세한 설명

출처: 인터넷
작성자: 사용자
키워드: 웹 프로그래밍 MySQL 자습서

선택한 * 테이블 제한 [오프셋]에서 행 | 행 오프셋된 오프셋

레코드의 지정 된 수를 반환 하는 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-마지막 레코드 행을 검색합니다.

관련 문서

연락처

이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이 페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.

커뮤니티에서 표절 사례를 발견한 경우 info-contact@alibabacloud.com 으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.