>  기사  >  데이터 베이스  >  MySQL 한도 사용법에 대한 자세한 설명 및 페이징 쿼리문 성능 분석

MySQL 한도 사용법에 대한 자세한 설명 및 페이징 쿼리문 성능 분석

黄舟
黄舟원래의
2017-03-29 13:24:271155검색

본 글에서는 MySQL의 한계의 상세한 사용법과 페이징쿼리 문의 성능 분석을 주로 소개한다. 참조 가치, 관심 있는 친구들이 참조할 수 있습니다.

사용 제한

쿼리 문을 사용할 때 데이터의 처음 몇 행 또는 데이터의 중간 행을 반환해야 하는 경우가 많습니다. 이 시간에 해? 걱정하지 마십시오. mysql은 이미 그러한 기능을 제공하고 있습니다.

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

LIMIT 절을 사용하면 SELECT 문이 지정된 수의 레코드를 반환하도록 강제할 수 있습니다. LIMIT는 하나 또는 두 개의 숫자 인수를 허용합니다. 인수는 정수상수여야 합니다. 두 개의 매개변수가 제공되는 경우 첫 번째 매개변수는 첫 번째 偏移量를 지정하여 레코드 행을 반환하고, 두 번째 매개변수는 반환할 최대 레코드 행 수를 지정합니다. 初始记录行的偏移量是 0(而不是 1): PostgreSQL과의 호환성을 위해 MySQL은 LIMIT # OFFSET # 구문도 지원합니다.

mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15

특정 오프셋부터 레코드세트 끝까지의 모든 레코드 행을 검색하려면 두 번째 매개변수를 -1로 지정하면 됩니다.

mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

매개변수가 하나만 주어지면 반환된 최대 레코드 행 수를 나타냅니다.

mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行

즉, LIMIT n LIMIT 0,n과 동일합니다.

Mysql 페이징 쿼리문 성능 분석

MySql 페이징 sql문을 MSSQL의 TOP 구문과 비교하면 MySQL의 LIMIT 구문과 비교 훨씬 더 우아합니다. 페이지 매김에 사용하는 것은 자연스러운 일입니다.

가장 기본적인 페이징 방법:

SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...

중소규모 데이터의 경우 이 정도 SQL만 주의하면 된다. Index를 사용하는지 확인하는 것입니다. 예를 들어 실제 SQL 문이 다음 문과 유사하면 Category_id 및 id 열에 복합 인덱스를 설정하는 것이 좋습니다.

코드는 다음과 같습니다.

SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10

하위 쿼리의 페이징 방법:

데이터 양이 증가할수록 페이지 수도 증가합니다. 다음 몇 페이지는 비슷할 수 있습니다.

코드는 다음과 같습니다.

SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10

간단히 말하면 더 뒤로 페이지 매김을 의미합니다. LIMIT语句的偏移量就会越大,速度也会明显变慢.

이때 대략 다음과 같이 하위 쿼리를 통해 페이징 효율성을 향상시킬 수 있습니다.

SELECT * FROM articles WHERE id >= 
(SELECT id FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10

JOIN 페이징 방법

SELECT * FROM `content` AS t1 
JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1) AS t2 
WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize;

테스트 후 Join The 효율성 페이징과 하위 쿼리 페이징은 기본적으로 동일한 수준이며, 소요되는 시간도 기본적으로 동일합니다. SQL 문 설명:

id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> system NULL NULL NULL NULL 1 
1 PRIMARY t1 range PRIMARY PRIMARY 4 NULL 6264 Using where
2 DERIVED content index NULL PRIMARY 4 NULL 27085 Using index

왜 이런 일이 발생합니까? 하위 쿼리는 인덱스에서 완료되고 일반 쿼리는 데이터 파일에서 완료되기 때문에 일반적으로 인덱스 파일은 데이터 파일보다 훨씬 작으므로 작업이 더 효율적입니다.

실제로 전략 모드와 유사한 방법을 사용하여 페이징을 처리할 수 있습니다. 예를 들어 100페이지 이내라고 판단되면 가장 기본적인 페이징 방법을 사용합니다. 100페이지보다 큰 경우 하위 쿼리를 사용한 페이지 매김입니다.

위 내용은 MySQL 한도 사용법에 대한 자세한 설명 및 페이징 쿼리문 성능 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.