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
운영게시판
최근게시물
MySQL Q&A 28111 게시물 읽기
No. 28111
쿼리 개선에 대해 문의
작성자
이동일
작성일
2009-03-30 13:31
조회수
5,466

select a.comctrlno from company as a, admin_data as b where a.title like b.company and a.tel like b.tel_01_01 and a.accessfrom BETWEEN '20070101' AND '20090131' and b.bill = '';


이런식으로 조인을 걸어 A테이블과 B테이블의 자료를 비교해 원하는 자료를 뽑아냈습니다.


이 조건에 충적하는 자료들의 enabled 컬럼의 값을 모두 4로 변경하고자 다음과 같은 쿼리를 날렸습니다.


update company as a, admin_data as b set a.enabled = 4 where a.title like b.company and a.tel like b.tel_01_01 and a.accessfrom BETWEEN '20070101' AND '20090131' and b.bill = '';



위의 select쿼리는 2분 정도에 모두 완료된 반면 아래의 update쿼리는 10분이 넘는 시간이 걸리뿐더러

작업중인 DB를 사용하려고 하면 Locked걸리는 문제로 update쿼리를 강제종료하고 데이터를 살펴보니 약 3분의 1정도의 데이터만 변경이 완료 되어 있었습니다.



여기서 드는 의문중 하나가 여기서 그냥 기다리면 저 쿼리가 모두 수행이 될런지와...

그렇다면 쿼리 개선의 여지는 없는지에 대해 문의 드립니다.


감사합니다.

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

얼마나 큰 테이블인지는 모르겠지만 일단 explain과 table description을 올려주시면 개선점을 찾는데 도움이 될 것 같습니다.

박현우(lqez)님이 2009-03-30 20:16에 작성한 댓글입니다.

like 조인이라.... 사용하지 말아야할 조인인데... 거기다 update 까지...

update 할 테이블이 company 뿐이고 변경이 자주 발생하지 않는다면

해당 select 쿼리로 키값만을 뽑아 임시테이블을 만들고

임시테이블과 company 테이블을 조인해서 업데이트 하시는게 빠를것이라고 봅니다.

update 나 delete 는 한로우 한로우씩 조건을 판단해서 처리하는거라

한건한건마다 조인해서 조건체크하고 그럼 컴터가 죽어나겠죠

이경환(babocom)님이 2009-04-06 03:43에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
28114[질문]Unicode(중국어간체) 저장안되는데.. [3]
초보
2009-03-31
9548
28113기본 int형은 왜 11비트 인가요? [2]
김지현
2009-03-30
5307
28112숫자가 시작하는위치 취득. [2]
mossmin
2009-03-30
5299
28111쿼리 개선에 대해 문의 [2]
이동일
2009-03-30
5466
28110use 쿼리 꼭 필요한가요? [1]
신정욱
2009-03-30
4999
28109Incorrect key file for table 'board'; try to repair it [1]
이창우
2009-03-30
5020
28108injection 공격 의심여부
이성준
2009-03-28
5335
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다