database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 4051 게시물 읽기
No. 4051
SQL Server 페이징 쿼리 평가 부탁드립니다.
작성자
조중규(biosensor)
작성일
2008-02-11 18:49ⓒ
2008-02-11 20:14ⓜ
조회수
4,153
CREATE TABLE [dbo].[PAGING_10000000](
 [row_id] [bigint] NOT NULL,
 [contents] [varchar](50) NOT NULL,
 [upd_dt] [char](10) NOT NULL,
 CONSTRAINT [PK_PAGING_10000000] PRIMARY KEY CLUSTERED
(
 [row_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]


DECLARE @row_no int
SET @row_no = 0

WHILE @row_no < 10000000
BEGIN
 INSERT INTO dbo.PAGING_10000000 (row_id, contents, upd_dt)
                          VALUES (@row_no, '1천만건 게시물입니다.', GETDATE())
 SET @row_no = @row_no + 1
END


SELECT TOP 10 *
  FROM PAGING_10000000
 WHERE row_id IS NOT NULL
-- 첫페이지는 아래 구문을 제거합니다.
   AND row_id > (SELECT MAX(D.page_key) 
                  FROM (SELECT TOP 9999990 row_id AS page_key -- 9999990번째 페이지
                         FROM PAGING_10000000
                        WHERE row_id IS NOT NULL
                 ORDER BY row_id ASC) AS D)
-- 첫페이지는 위의 구문을 제거합니다.
 ORDER BY row_id ASC

힘들게 함 만들어 보았는데요.
위의 쿼리를 보시고 NOT IN이나 순정렬/역정렬 등을 사용한 쿼리에 비해 어떨지 단호한 평가를 부탁드립니다.
테스트 결과는 몇초정도 빨랐습니다.
감사합니다.

이 글에 대한 댓글이 총 1건 있습니다.

인덱스를 클러스터와 난클러스터 두개가 같은 row_id 에 걸려 있어야 페이징이 빠르게 됩니다. 
그리고 max 보다는 order by top 1 을 쓰심이 좋을 것 같습니다. 그럼 한 100배 빨라지겠네요 ^.^

그리고 테스트데이터 넣는 뺑뺑이에 set nocount on 과 begin tran 을 넣어주셔야 할듯 하네요 맨마지막에 commit tran 도 넣으시구요 

석이님이 2008-02-15 16:58에 작성한 댓글입니다.
이 댓글은 2008-02-15 17:01에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4054sql서버에러에 관해서 문의드립니다. [1]
정명규
2008-02-12
4582
4053쿼리 질문입니다.
초보
2008-02-12
3080
4052프로시져 리턴값 받기 [2]
청년재벌
2008-02-11
5332
4051SQL Server 페이징 쿼리 평가 부탁드립니다. [1]
조중규
2008-02-11
4153
4050이런 쿼리가 가능할까요? [1]
작은소망
2008-02-11
3225
4048테이블 열 삭제 [1]
박판규
2008-02-11
7585
4040쿼리 질문입니다. [2]
초보에요
2008-02-11
2950
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다