집 >데이터 베이스 >MySQL 튜토리얼 >sqlserver의 페이징 쿼리 처리 방법을 설명하세요.
다음은 제가 온라인에서 찾은 쿼리 스크립트를 작성하는 여러 가지 방법입니다. 참고용으로 스크립트 하우스 플랫폼에 공유하고 싶습니다.
sqlserver2008에서는 키워드 제한을 지원하지 않으므로 페이징 SQL 쿼리 문을 사용할 수 없습니다. MySQL. 다행히 sqlserver2008에서는 top, rownumber 등의 키워드를 제공하므로 이러한 키워드를 통해 페이징이 가능합니다. 다음은 인터넷에서 찾은 여러 쿼리 스크립트의 쓰기 방법입니다.
select top 10 * from table1 where id not in(select top 开始的位置 id from table1)
max:sql 코드:
select top 10 * from table1
where id>(select max(id)
from (select top 开始位置 id from table1 order by id)tt)
sql 코드:
select *
from (
select row_number()over(order by tempcolumn)temprownumber,*
from (select top 开始位置+10 tempcolumn=0,* from table1)t
)tt
where temprownumber>开始位置
효율성: 1위: row
2위: max
3위: top
단점:
최대: 사용자 복잡한 SQL을 작성해야 하며 지원되지 않음 -고유한 열 정렬top: 사용자가 복잡한 sql을 작성해야 하며, 복합 기본 키는 지원되지 않습니다. row: sqlserver2000은 지원되지 않습니다.
테스트 데이터: 페이지당 총 320만 개의 데이터 10개의 데이터를 표시하며 각각 20,000페이지, 150,000페이지, 320,000페이지를 테스트했습니다.페이지 수, 상위 계획, 최대 계획, 행 계획20,000, 60ms, 46ms, 33ms150,000, 453ms, 343ms, 310ms
320,000, 953ms, 720ms, 686ms는 연결하는 프로그램입니다. SQL 문 페이징 솔루션 , 사용자가 언급한 sql 문은 복잡한 sql 로직을 작성할 필요가 없습니다사용자가 다음과 같이 sql을 제공했습니다sql code
select * from table15번째 항목부터 시작하여 5개 항목을 쿼리하여 처리합니다. SQL은 sql code
select * from ( select row_number()over(order by tempcolumn)temprownumber,* from (select top 10 tempcolumn=0,* from table1)t )tt where temprownumber>5가 됩니다. 이것은 무엇을 의미합니까? 분해먼저 사용자가 입력한 SQL 문을 살짝 수정합니다select 뒤에 top을 추가하면 시작 위치 + 항목 개수가 됩니다
tempcolum 컬럼을 추가하면 이렇게 됩니다
sql 코드
select top 20 tempcolumn=0,* from clazz
지금 방금 나온 열은 order by here
select row_number()over(order by tempcolumn)temprownumber,* from (修改过的查询)t다른 레이어를 적용하고 시작 위치보다 행 번호가 작은 행을 필터링합니다.
sql code
select * from (第二层)tt where temprownumber>10
위 내용은 sqlserver의 페이징 쿼리 처리 방법을 설명하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!