'MSSQL'에 해당되는 글 2건

  1. 2006/04/24 MSSQL에서 페이징 처리 (7)
  2. 2006/04/19 [SQL Server 2000 Driver for JDBC] socket write error (8)
그냥 쿼리를 사용할 경우와 SP를 사용할 경우 가장 퍼포먼스가 뛰어난 query or Best Practice를 찾기 위해서 네이버와 구글검색엔진에서 검색한 결과를 참조하고 테스트를 진행해 보려 한다.

1. 네이버에서 검색을 해봤다


MSSQL 페이징 처리
http://blog.naver.com/ifuture74/60008703576
게시물은 100만개를 넣고 테스트를 했습니다.
테스트 게시판을 보시려면.. 맨위에 각 게시판을 링크를 걸었습니다.
서버가 구려서.. 제대로 될지 모르지만..
제 노트북
(CPU : p4-1.8, RAM : 768Mb, 컴팩 프리자리오 2820AP, 환경 : 윈도우2003 MSSQL2000)
에서 테스트 해본 봐로는 처음페이지(1), 마지막 페이지(50000) 처리 시간이 아래와 같습니다.(단위 ms)

1 : 320    12289.06
2 : 273    11476.56
3 : 289    4406.25
4 : 289    2695.31
5 : 289    1218.75
6 : 7.81    23.44

이게 high 퍼포먼스의 6번 쿼리 내용이다. 이 결과를 보면 무조건 6번을 선택해야 한다.

SELECT TOP [페이지 출력갯수] [출력 필드명] FROM [테이블명]
  WHERE [글번호] <= ( SELECT MIN([글번호])
  FROM (
SELECT TOP [제거할 게시물수] + 1 [글번호]
  FROM [테이블명] WHERE [인덱스] = [시작인덱스번호] AND [인덱스] = [끝인덱스번호]
) AS A
  WHERE [인덱스] = [시작인덱스번호] AND [인덱스] = [끝인덱스번호]
)
  AND [인덱스] = [시작인덱스번호] AND [인덱스] = [끝인덱스번호]



그리고, 아래와 같은 방법도 있다.

페이징에대한 엔코아거 소개
http://blog.naver.com/locusty/80014513540


2. 여기부터는 구글신과 함께 검색을~~

Paging in MSSQL
http://lejalgenes.com/techtips/tips/Microsoft_SQL_Server/Paging_in_MSSQL.php
--> 이 방법은 not in 1번, order by  2번 실행이 되었다. 대용량에서는는 비추!!

Paging results in MS SQL Server
http://josephlindsay.com/archives/2005/05/27/paging-results-in-ms-sql-server/
--> 이것은 내가 쓰는 방식하고 똑같지 않은가? 오라클에서 페이징 처리할 때 rownum을 이용해서 비슷하게 쿼리를 작성을 했었다. 오라클에서는 hint를 사용해서 order by 에 대한 비용을 최소화 했는데, MSSQL은 order by를 두번 사용하는 비용이 만만치는 않다.
다양한 덧글들이 올라왔으나, not in을 사용한 것은 일단 무시하기로 하고, 최고의 복잡도를 자랑하는 not in을 웬간해서는 사용하면 안된다.
SELECT * FROM ( SELECT TOP x * FROM (
SELECT TOP y fields
FROM table
WHERE conditions
ORDER BY table.field ASC) as foo
ORDER by field DESC) as barORDER by field ASC

테스트
나도 백만건 정도 입력을 하고, 테스트를 해보려고 한다...^^

* 기존 오라클을 사용할 때의 습성에 따라 josephlindsay와 같은 쿼리 구조를 사용을 했다. order by를 2번 사용했지만, 인덱스가 걸린 필드를 사용한다면 만족할 만한 성능이 나올거라는 생각이다.
Posted by ologist
 TAG mssql, paging
디비풀을 사용할때 네트워크가 끊길 경우 문제, DBCP인 경우 아래와 같은 설정을 하자



<parameter>

        <name>validationQuery</name>

        <value>select 1</value>

</parameter>



http://blog.naver.com/grantpeace/140019251537

http://jakarta.apache.org/commons/pool/apidocs/org/apache/commons/pool/PoolableObjectFactory.html
Posted by ologist
 TAG DBCP, mssql
이전버튼 1 이전버튼

블로그 이미지
ologist

공지사항

Yesterday191
Today136
Total34,708

달력

 « |  » 2012.02
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

최근에 받은 트랙백

글 보관함