Notice
Recent Posts
Recent Comments
Tags
- ViewData
- ViewBag
- 맥 오라클설치
- ASP.Net Core 404
- 하드 마이그레이션
- asp.net dropdownlist
- asp.net core Select
- XSS PHP
- jquery 바코드
- javascript 바코드 생성
- 타임피커
- 404에러페이지
- javascript 바코드스캔
- jquery 바코드생성
- XSS방어
- SSD 복사
- django 엑셀불러오기
- 하드 윈도우 복사
- javascript redirection
- php 캐쉬제거
- javascript 유효성체크
- Mac Oracle
- 파일업로드 체크
- asp.net Select
- TempData
- 강제이동
- 말줄임표시
- 바코드 생성하기
- 파일업로드 유효성체크
- 바코드 스캔하기
웹개발자의 기지개
[MS-SQL] 페이징 쿼리문 리스트 목록처리 - 다중쿼리, 저장프로시저 본문
SQL/MS-SQL
[MS-SQL] 페이징 쿼리문 리스트 목록처리 - 다중쿼리, 저장프로시저
http://portfolio.wonpaper.net 2022. 10. 19. 01:29보통의 경우 Select 문 형식으로 List 목록을 뽑아 올때, 구간을 나누어 페이징 처리를 한다.
페이징의 기법들을 몇가지 생각해 보았다.
데이터베이스에 따라서 끊어서 읽어오는 페이징 방식이 다르겠지만
mysql 은 limit 문으로 간단히 읽어 올수 가 있다.
하지만 MS-SQL 의 경우 limit 가 없고, top 형식을 이용하기 때문에 아래와 같은 방식으로 처리할 수 있다.
1. 다중 쿼리방식
http://wonpaper.net/Blog_view.aspx?tb=board_aspnet&no=2
@iPage 페이지번호
@PageSize 페이지크기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
SELECT TOP @PageSize * FROM board
WHERE no NOT IN
(SELECT TOP (@iPage * @PageSize) no FROM board
ORDER BY no ASC)
ORDER BY no ASC
SELECT TOP 10 * FROM board
WHERE no NOT IN
(SELECT TOP 0 no FROM board
ORDER BY no ASC)
ORDER BY no ASC
select * from board
where thread in
( select top 20 thread from
( select top 1020 thread from board
order by thread desc ) as a
order by thread asc )
order by thread desc
|
cs |
2. 저장프로시저의 Offset Rows Fetch Next 문으로 처리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
CREATE PROCEDURE [dbo].[AnswersList]
@PageNumber Int = 1,
@PageSize Int = 10
AS
Select
[Id],
[Name],
[Email],
[PostDate],
[PostIp],
[Title],
[Category],
[ReadCount],
[FileName],
[FileSize],
[DownCount],
[CommentCount],
[Step]
From Answers
Order By Ref Desc, RefOrder Asc
Offset ((@PageNumber - 1) * @PageSize) Rows Fetch Next @PageSize Rows Only;
|
cs |
역시나 저장프로시저의 속도가 어마무시하므로 저장프로시저 방식을 추천한다.
'SQL > MS-SQL' 카테고리의 다른 글
[MS-SQL] Over 함수 이용하기 - 통계 순위적용 (0) | 2024.02.01 |
---|---|
[MS-SQL] 자동 증가 키값 가져오기 (0) | 2023.04.29 |
[MS-SQL] Mac 에서 SQL Server 설치 ( Docker ) (4) | 2022.09.03 |
[MS-SQL] 날짜 기간검색 쿼리문3 [between, 단순 부등호] (0) | 2021.02.24 |
[MS-SQL] '현재 데이터베이스에 사용자, 그룹 또는 역할 이미 있습니다' 에러 해결하기 (0) | 2020.12.12 |
Comments