다음은 제가 온라인에서 찾은 쿼리 스크립트를 작성하는 여러 가지 방법입니다. 참고용으로 스크립트 하우스 플랫폼에 공유하고 싶습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!