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 9321 게시물 읽기
No. 9321
update 구문 질문.
작성자
pranludi(pranludi)
작성일
2013-07-29 20:43
조회수
9,681

안녕하세요 -

merge 구분 질문입니다. 현재 오라클에서 아래와 같은 구문으로 사용중입니다.

MERGE INTO user_info u1 USING ( SELECT user_no, ROW_number() OVER( ORDER BY score_accrue DESC, join_time ASC ) AS ur FROM user_info WHERE user_league = 1 ) u2

   ON ( u1.user_no = u2.user_no )

 WHEN MATCHED THEN UPDATE SET u1.user_rank = u2.ur;

 

이걸 postgresql 으로 변경할려고 합니다.

with u1 ( select user_no, user_rank from user_info )

update ...

형태는 지원을 안하는거 같은데요 -

추후, 데이타가 많아질것을 고려해서 좋은 방법이 없을까요?

 

...

update user_info set user_rank = ( select ... ( select ... ) where user_no = u.user_no ) ;

요렇게도 생각을 해봤지만 효율이 안 나올것 같아서요...

 

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

update user_info u1

set u1.user_rank = u2.ur

from (SELECT user_no, ROW_number() OVER( ORDER BY score_accrue DESC, join_time ASC ) AS ur FROM user_info WHERE user_league = 1 ) u2

where  u1.user_no = u2.user_no 

 

오라클과 같은 구문입니다.(아마 실행 비용도 비슷할 듯)

 

문제는 자료가 많을 경우, user_info의 해당 row들이 빈번하게 업데이트 되는 경우는 

오라클이나, PostgreSQL이나 모두 제 성능을 내기 힘든 쿼리같아 보입니다. 

 

랭킹 테이블을 분리하는 것을 고려해 봄이 좋지 않을까싶습니다.

김상기(ioseph)님이 2013-07-30 10:06에 작성한 댓글입니다.

답변 고맙습니다.

역시 데이타가 많아지면 ... 고민이 깊어지네요 ^^;;

pranludi(pranludi)님이 2013-07-30 14:12에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9324pgFouine로 쿼리를 보니 #015#011#011 문자가 들어 있는데 없애는 방법 좀 가르쳐 주세요. [2]
iyob
2013-08-06
9486
9323무설치 배포.. [2]
CS.Shin
2013-08-05
9958
9322특정한 회원만 쿼리가 느려지는데... [5]
iyob
2013-07-31
9623
9321update 구문 질문. [2]
pranludi
2013-07-29
9681
9320tablespace가 disk full일 때... [1]
DB랑
2013-07-25
9681
9319bytea형식은 어떻게 Select해야되나요. [1]
이기자
2013-07-24
9291
9318필드없이 쿼리시 순번이 보일수 있나요? [1]
질문자
2013-07-23
11153
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다