mysql의 limit 고전적 용법 및 최적화 실례를 상세히 설명하다

2539 단어
사용법 1
 
 
  
SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2 OFFSET 1;
 

예를 들어 이 SQL은 limit 뒤에 두 개의 데이터가 있고 오프셋 뒤에는 첫 번째 데이터부터 읽는다.
사용법
 
 
  
SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2,1;
 

이 SQL, limit 뒤에는 두 번째 줄부터 읽고 한 줄의 정보를 읽는다.
이 두 개는 절대 헷갈리지 마세요.
사용법
 
  
 select * from tablename limit 100,-1
 

100조 뒤부터. - 마지막 기록.
사용법
 
 
  
 select * from tablename limit 15
 

limit 0,15에 해당합니다.조회 결과 추출 전 15개 데이터 사용법 5
mysql 저버전에서는 limit offset이 지원되지 않습니다.
limit offset은 mysql 4.0 이상의 버전에서 정상적으로 실행되며, 구 버전의 mysql 3.23에서는 무효입니다
limit m offset n은 limit m, n과 같습니다.
limit의 최적화
mysql의 limit은 페이지를 나누는 데 큰 편의를 가져왔지만 데이터량이 많을 때 limit의 성능은 급격히 떨어졌다
출처: 1묘 3분지 블로그
MYSQL의 최적화는 매우 중요하다.다른 가장 자주 사용되고 최적화가 가장 필요한 것은 리미트다.mysql의limit은 페이지를 나누는 데 큰 편의를 가져왔지만 데이터량이 많을 때limit의 성능이 급격히 떨어진다.
마찬가지로 10개의 데이터를 뽑습니다.
 
 
  
select * from yanxue8_visit limit 10000,10

select * from yanxue8_visit limit 0,10
 

수량급이 아니야.
인터넷에서도 limit에 관한 다섯 가지 최적화 준칙이 많은데 모두 mysql 매뉴얼에서 번역한 것으로 정확하지만 실용적이지 않다.오늘 한 편의 문장이 limit의 최적화에 관한 것을 썼는데, 아주 괜찮다.
글에서 limit을 직접 사용하는 것이 아니라 오프셋의 id를 먼저 얻은 다음에 limit size를 직접 사용하여 데이터를 가져옵니다.그의 데이터에 따르면 리미트를 직접 사용하는 것보다 훨씬 낫다.여기서 나는 구체적으로 데이터를 사용하여 두 가지 상황으로 나누어 테스트를 진행한다.(테스트 환경 win2033+p4 듀얼 코어(3GHZ) + 4G 메모리 mysql 5.0.19)
1. 오프셋이 어렸을 때.
 
 
  
select * from yanxue8_visit limit 10,10
 

0.0004-0.005 사이를 유지하면서 여러 번 실행
 
 
  
Select * From yanxue8_visit Where vid >=(

Select vid From yanxue8_visit Order By vid limit 10,1

) limit 10

여러 번 운행하여 시간은 0.0005-0.0006 사이를 유지하는데 주로 0.0006이다
결론: 오프셋이 비교적 작을 때 리미트를 직접 사용하는 것이 좋다.이것은 분명히 하위 조회의 원인이다.
2. 오프셋이 클 때.
 
 
  
select * from yanxue8_visit limit 10000,10
 

여러 차례 운행하여 시간은 0.0187 정도를 유지하다
 
 
  
Select * From yanxue8_visit Where vid >=(

Select vid From yanxue8_visit Order By vid limit 10000,1

) limit 10

여러 번 운행하였는데 시간은 0.0061 정도였고 전자의 1/3에 불과했다.오프셋이 클수록 후자가 좋을 것으로 예상된다.
앞으로 자신의 limit 문장을 고치고 mysql를 최적화해야 합니다.

좋은 웹페이지 즐겨찾기