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 1876 게시물 읽기
No. 1876
두 DB간에 쿼리작업에서 작업이 종료하지 않는 문제..
작성자
백승진
작성일
2005-04-12 11:23
조회수
2,455

안녕하세요. 두 DB간에 쿼리 작업에 대해 전문가의 의견을 구합니다.

지금 한서버에 디비가 두개가 있구요. 두개를 조인해서 값을 뽑아오는 구문입니다. 완전 일반적인 거죠.

 

쿼리 분석기에서 sa계정으로 로긴한뒤

 

select 카드번호, 주민번호 from aaaa.dbo.T회원
where 주민번호 in (select ssn from bbbb.dbo.member
where no_card is null)

이렇게 실행을 시키면 쿼리 시간은 1초가 걸립니다.

 

그러나 이것을 커서를 만들어서 돌리면 작업이 종료하지 않고 계속 작업 중으로 뜨다가 결국에 타임아웃에 걸려 끊어지고 맙니다.

혹시 제가 무엇인가 잘못처리를 하고 있는 것인지 아니면 DB가 잘못된건지 의견 부탁드립니다.

 

커서의 스크립트는 밑에 있습니다.

 

DECLARE @P_NO_CARD VARCHAR(5)
DECLARE @P_USERID VARCHAR(20)
DECLARE @P_SSN VARCHAR(20)

 


DECLARE T_CURSOR CURSOR FOR
select 카드번호, 주민번호 from aaaa.dbo.T회원
where 주민번호 in (select ssn from bbbb.dbo.member
where no_card is null)


OPEN T_CURSOR
FETCH NEXT FROM T_CURSOR INTO @P_USERID, @P_SSN
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @P_NO_CARD+@P_USERID
FETCH NEXT FROM T_CURSOR INTO @P_USERID, @P_SSN

END

CLOSE T_CURSOR
DEALLOCATE T_CURSOR

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

문제는 다른 쪽에 있지 않나요???

혹시나 해서요..

 

이하 초 간단 샘플.. ^^;;

 

 

create table pubs.dbo.ta(
  ca int
)
create table northwind.dbo.tb(
  cb int
)
go

insert into pubs.dbo.ta values (1)
insert into pubs.dbo.ta values (2)
insert into pubs.dbo.ta values (3)
insert into pubs.dbo.ta values (4)
insert into pubs.dbo.ta values (5)
insert into northwind.dbo.tb values (1)
insert into northwind.dbo.tb values (3)
insert into northwind.dbo.tb values (5)
insert into northwind.dbo.tb values (7)
insert into northwind.dbo.tb values (9)
go

select * from pubs.dbo.ta
select * from northwind.dbo.tb
go


declare @col int

declare csr_test cursor for
  select ca
    from pubs.dbo.ta
    where ca in (select cb
                           from northwind.dbo.tb
                           where cb is not null)

open csr_test

fetch next from csr_test into @col
while @@fetch_status = 0
begin
  print @col
  fetch next from csr_test into @col
end

close csr_test
deallocate csr_test

 

길가는 나그네..님이 2005-04-12 13:02에 작성한 댓글입니다. Edit

제가 가지고 있는 상식도 이렇게 느릴 수가 없는 건데 늦어서 다른 문제가 있지 않나 생각을 하고 글을 올린 겁니다.

 

다른 문제가 어떤게 있을까요?

 

참고로 두 DB는 다른 곳에서 한 디비서버로 이전을 하고 유저들의 권한을 다 준것들이구요. 작업은 sa계정으로 쿼리분석기로 들어가 select문은 조회가 몇초안에 나온다는게 문제입니다. 그리고 위의 커서를 포함한 디비에 커서들이 한 45개 정도 구성되어 있습니다.

 

고수님들에 답변 부탁드릴께요...

백승진님이 2005-04-13 09:15에 작성한 댓글입니다. Edit

sa => select OK

     => cursor OK (?)  : 여기도 OK죠.. ??

 

다른 user => select OK (?)  : objects에 대한 사용권한 확인해 보세여..

               => cursor OK (?)  : 여기서 생긴 문제인가요? user는 한 명일 때 test 결과는 성공인지? 등의 정보도 알수 있으면 좋겠네요..

 

위 작업은 QA에서 작업을 전제로 합니다..

 

그럼..

 

 

길가는 나그네..님이 2005-04-13 12:37에 작성한 댓글입니다. Edit

네 QA에서 실행을 시키면 시간은 30분 정도 걸리지만 CURSOR가 돌아서 처리는 됩니다.

 

참 이상한게 CURSOR를 빼고 SELECT구문을 했을 때는 조회가 1초만에 튀어 나오는데

CURSOR 안에 넣으면 시간이 30분 걸립니다.

SELECT하는 쿼리 하나만 넣구 말이죠.

백승진님이 2005-04-14 11:40에 작성한 댓글입니다. Edit

지난 주 출장을 갔다왔슴돠~ ^^;;

 

그건 그렇고, 이렇게 해서는 문제 원인도 알 수 없을 것 같습니다..

 

테이블이 엄청 크다는 가정하에,

member테이블에 (no_card, ssn) 인덱스를..

T회원 테이블에 (주민번호, 카드번호) 인덱스를..

만들어서 테스트 한 번 해보세여..

(물론 테스트서버에서여..)

 

그럼..

길가는 나그네..님이 2005-04-18 10:48에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1879convert datetime
bdyou
2005-04-15
3417
1878안녕하세요. 서버 등록과 연결이 안됩니다. (왕초보) [3]
고세환
2005-04-13
3065
1877ms-sql EM관리자에서 로그인하면 사용권한 없는 디비도 보이는데요..... [4]
김용우
2005-04-12
10185
1876두 DB간에 쿼리작업에서 작업이 종료하지 않는 문제.. [5]
백승진
2005-04-12
2455
1875LIKE vs BETWEEN [2]
청년재벌
2005-04-11
2467
1874오라클 쿼리 mssql로 변경문의 [2]
초보
2005-04-11
3384
1873랜덤하게 값을 뽑는 방법? [1]
냐하하하
2005-04-11
2547
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.027초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다