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
운영게시판
최근게시물
PostgreSQL Q&A 7145 게시물 읽기
No. 7145
게시판 페이지 선택시 보여주는것처럼...
작성자
이기자(k3i2)
작성일
2007-05-24 23:53
조회수
4,866

어느 부분만 가져오는 쿼리문이나 방법이 없겠습니까?

예를 들어, 검색 총 결과가

A ...

B ...

C ...

D ...

E ...

H ...

K ...

S ...

일경우,( A ~ S는 각 레코드입니다 )


5번째(E)에서 7번째(K)까지만 조회하는 제일 빠른 방법은?


조회건수가 수만건이 되다보니 조회시간이 너무 오래걸려서 게시판처럼 분할 할려고 합니다.

PHP같은 경우엔 응용할수있는 함수가 있지만,

VB나 DELPHI, PB같은프로그램 으로 할려다보니

쿼리문 하나로 끝내야할거 같아서 질문드립니다.

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

뭔 말인지 못 알아들었습니다. 


실재 업무에서 뭘 하려고 하는지 알려주시면, 


좀 더 이해가 쉽겠네요.


그럼 하려고 하는 방법론에 문제가 있다면 다른 방법을 생각해 보라고까지 나올겝니다. 같은 일을 했던 사람이라면.

김상기(ioseph)님이 2007-05-25 02:55에 작성한 댓글입니다.

제 설명이 부족했군요. 죄송합니다. ^^


제 프로그램에서(웹 프로그램아닌 응용프로그램)

매출 조회를 하는데, 하루매출 건수가 수만건이 되다보니 조회 시간이 너무 오래걸려서

생각한방법이, 현재는 한번에 수만건 전체를 한번에 다 조회를 하게되는데,

웹게시판의 페이지 나눈것처럼 한페이지 분량씩만 조회할수있게 하면 빠르겠다는 생각입니다.


근데 문제가되는게, 조회조건, 판매상황에따라, 순차번호로 1~ 현재판매건수 까지

저장돼있는 부분이 없어서 나누기가 까다롭다는거죠.


혹시 조회할때 임시로 건수마다 ROW 번호를 주어, 웹게시판처럼 요구페이지 * 페이지당건수 해서

원하는 페이지의 판매자료만 화면에 뿌려줄수있는 쿼리문이 가능한지 물었던 것입니다.


이말이 더 햇깔리시나요? T.T ;

이기자(k3i2)님이 2007-05-25 09:52에 작성한 댓글입니다.

매출에 대한 원천 자료를 모두 봐야할 상황이라면, 


어떤 거래처별로, 아니면 기간 - 자료가 너무 많다면, 1시간 단위나, 그것도 안되면 5분 단위로...

또는 판매자 단위, 등등..

이런식으로 그 많은 자료를 접근하는 방법을 좀 더 치밀하게 해서 그 범위를 줄이면 될 듯합니다. 


데이터베이스 설계의 초심자들이 범하는 실수가 

"원천 자료 - 기반 자료는 모두 중요하고, 모두 리포트 되어야한다" 는 생각입니다. 


실무에서 사람은 하나의 작업에서 수백개의 자료만 나열되어도 그것을 제대로 보질 못합니다. 

실무자에게 정말 원하는 것이 무엇인지, 그 원하는 결과만 보여주는 방식으로 바꾸세요. 


솔직히 이곳 게시판만 보아도 수십만건의 자료를 모두 살펴보는 사람은 극히 없을 것이며, 

검색 결과로 수백건만 나와도 그걸 모두 보는 사람은 없거든요 :)

김상기(ioseph)님이 2007-05-25 10:16에 작성한 댓글입니다.

답변 감사합니다.

판매입력은 실시간이 아닌, 한 시간대에 일괄처리됩니다.
판매한 자료서류를 모아두었다가 퇴근전이라든가 한가한 시간대에 입력하죠.

판매물품이 하나 하나의 제품에 고유한 품명코드와 시리얼이 존재하는데,
말씀하신 조회조건은 하나의 시리얼을 찾는거까지 상세하게 되어있습니다.

문제는 사용자가 어떻게 사용하든 전체 조회가 가능해야된다는거죠.
하루하루 매출을 조회해서 그 자료를 엑셀파일로 저장해서 CD에 보관할수도있고,
모두 출력해서 철을 해놓을수도있고...

그럼 혹시 Select 문에서 조회하면 필드명과는 무관하게,
왼쪽에 Row라고해서 순차번호가 나오는데(Windows 버전 pgAdmin III Query에서 조회시),
이걸 임시로라도 필드처럼 사용할수있는건 없나요? 그걸 조회조건으로 걸면 될거같은데...

예를들어 Query에서는 없는 함수니까 에러가 나는데,
Select getrow(),* from sale where ( getrow() >= 10 and getrow() <= 20 and ...' 
뭐 이런식으로 조회 로우 번호를 주어 원하는 부분만 빼낼수있는,
getrow() 같은 그런 함수가 있나요?

getrow() 는 제가 가상으로 생각한 조회건건마다 할당되는 조회순차번호를 리턴해주는 함수입니다.

이기자(k3i2)님이 2007-05-25 10:59에 작성한 댓글입니다.
이 댓글은 2007-05-25 11:13에 마지막으로 수정되었습니다.

판매 원천 자료의 기본키(Primary Key)로 그 범위를 정하면 되질 않나요?

그리고 그것의 범위를 부분부분 잘라서 출력하면 될 듯싶네요.

일단 해당 범위를 시작하고, 끝나는 primary key를 구하고, 
그것을 그냥 일괄적으로 적당이 부분부분 나누고, 그렇게 풀어가면 될 것같네요.


김상기(ioseph)님이 2007-05-25 13:07에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7151테이블을 메모리에 생성할 수 없나요 ? [6]
김정주
2007-06-04
4762
7147트랜잭션 프로세스 죽이기?.... [1]
moons
2007-05-29
5121
71467.1.1버전에서 vacuumdb할 경우 락 안걸리나요?
dba
2007-05-25
4137
7145게시판 페이지 선택시 보여주는것처럼... [5]
이기자
2007-05-24
4866
7144쿼리 검색시 limit를 사용해도 속도는 같은지요? [1]
dba
2007-05-24
4830
7142dblink 로 select, insert, update, delete
i2801
2007-05-22
5264
7141쿼리가 로그에 출력되게 하면, postgres가 다운되어 버립니다. [4]
dba
2007-05-21
4761
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다