MySQL 에서 SQL 페이지 조회 의 몇 가지 실현 방법 과 장단 점
개발 과정 에서 페이지 별 수 요 를 자주 만 났 으 니 오늘 여기 서 정리 해 보 자.
쉽게 말 하면 방법 은 두 가지 가 있 는데 하 나 는 소스 에서 제어 하고 하 나 는 엔 드 에서 제어 한다.원본 제어 페이지 논 리 를 SQL 층 에 놓 기;엔 드 에서 모든 데 이 터 를 한꺼번에 가 져 오 는 것 을 제어 하고 페이지 논 리 를 UI 에 놓 습 니 다(예 를 들 어 GridView).분명히 말단 통제 개발 의 난이도 가 낮 고 소 규모 데이터 에 적합 하지만 데이터 양 이 증가 할 때 성능 과 IO 소 모 는 받 아들 일 수 없다.원천 적 인 통 제 는 성능 과 개발 난이도 에 있어 비교적 균형 을 이 루 고 대부분 업무 장면 에 적응한다.그 밖 에 객관 적 인 상황(성능 요구,소스 와 엔 드 의 자원 점용 등)에 따라 소스 와 엔 드 사이 에 한 층 을 더 하고 특수 알고리즘 과 기술 을 응용 하여 처리 할 수 있다.다음은 주로 SQL 의 페이지 를 논의 합 니 다.
페이지 를 나 누 는 문 제 는 조건 을 만족 시 키 는 질서 있 는 데이터 에서 현재 보 여 줘 야 할 부분 을 캡 처 하 는 것 이다.실제로 각종 데이터 베 이 스 는 페이지 문 제 를 고려 하여 MySql 의 LIMIT,Oracle 의 ROWNUM 과 ROW 등 전략 을 내 장 했 습 니 다.NUMBER(),SqlServer 의 TOP 과 ROWNUMBER(),이 를 바탕 으로 우 리 는 일련의 페이지 를 나 누 는 방법 을 얻 을 수 있 습 니 다.
1.MySql 의 LIMIT 와 Oracle 의 ROWNUM 을 바탕 으로 반환 구간 을 직접 제한 할 수 있 습 니 다(MySql 의 경우 Oracle 의 ROWNUM 을 사용 할 때 하위 조 회 를 사용 해 야 합 니 다).
방법 1.복귀 구간 직접 제한
SELECT * FROM table WHERE ORDER BY LIMIT (( -1)* ), ;
장점:쓰기 가 간단 하 다.단점:페이지 와 페이지 크기 가 너무 크 면 성능 이 현저히 떨어진다.
적용:데이터 양 이 많 지 않 습 니 다.
2.LIMIT(MySql),ROWNUM(Oracle),TOP(SqlServer)을 바탕 으로 되 돌아 오 는 줄 수 를 제한 할 수 있 기 때문에 다음 과 같은 두 가지 일반적인 방법(SqlServer 를 예 로 들 면)을 얻 을 수 있 습 니 다.
방법 2.NOT IN
SELECT TOP * FROM table WHERE NOT IN
(
SELECT TOP ( -1)* FROM table WHERE ORDER BY
)
ORDER BY
장점:유 니 버 설 이 강하 다.단점:데이터 양 이 많 을 때 뒤로 넘 기 고 NOT IN 의 데이터 가 너무 많 으 면 성능 에 영향 을 줍 니 다.
적용:데이터 양 이 많 지 않 습 니 다.
방법 3.MAX
SELECT TOP * FROM table WHERE AND id >
(
SELECT ISNULL(MAX(id),0) FROM
(
SELECT TOP (( -1)* ) id FROM table WHERE ORDER BY id
) AS tempTable
)
ORDER BY id
장점:속도 가 빠 르 고 특히 id 가 메 인 키 일 때.단점:적용 면 이 좁 아 정렬 조건 이 단일 하고 비교 가 가능 합 니 다.
적용:간단 한 정렬(특수 한 경우 에 도 유사 한 비교 가능 한 값 으로 변환 하려 고 시도 할 수 있 습 니 다).
3.SqlServer 와 Oracle 기반 ROWNUMBER()는 데 이 터 를 되 돌려 주 는 줄 번 호 를 얻 을 수 있 습 니 다.이 를 바탕 으로 반환 제한 구간 에서 다음 과 같은 방법 을 얻 을 수 있 습 니 다(SqlServer 를 예 로 들 면).
방법 4.ROWNUMBER()
SELECT TOP * FROM
(
SELECT TOP ( * ) ROW_NUMBER() OVER (ORDER BY ) AS RowNum, * FROM table WHERE
) AS tempTable
WHERE RowNum BETWEEN ( -1)* +1 AND *
ORDER BY RowNum
장점:데이터 양 이 많 을 때 NOT IN 보다 우세 합 니 다.단점:작은 데 이 터 는 NOT IN 보다 못 하 다.
적용:대부분의 페이지 조회 수요.
이상 은 자신 이 정리 한 졸견 입 니 다.성능 비 교 는 인터넷 자료 와 개인 판단 에서 나 왔 고 깊이 실험 하지 않 았 습 니 다.부당 한 점 은 모두 가 지적 해 주 십시오.
MySQL 에서 페이지 를 나 누 어 조회 하 는 몇 가지 실현 방법 과 장단 점 에 관 한 글 을 소개 합 니 다.MySQL 에서 페이지 를 나 누 어 조회 하 는 방법 에 관 한 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.