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 3812 게시물 읽기
No. 3812
쿼리가 실행시간이 너무 오래걸리네요.
작성자
juicinemo(juicinemo)
작성일
2007-10-18 15:36ⓒ
2007-10-19 15:21ⓜ
조회수
3,765

안녕하세요. 질문등록은 처음입니다.

접속현황을 나타나는 페이지에 사용한 쿼리입니다.
사용자가 접속해서 로그아웃할때까지 처리한 내용을 액션으로 나누어서 표시하고 있거든요.
리스트로 조회를 할때,
일단 사용자가 로그인해서 로그아웃까지 처리한 것을 하나의 범위처럼 나누기위해서 (물론 로그아웃이 없을때도 있지만)
최근날짜부터 보여줘야하고 (날짜역순).사용자별로 보여줘야하고(사용자순).  처리한순서대로(시간 순) 이렇다보니.

SELECT 
 USER_ID AS [사용자ID],
 ACCESS_IP AS [IP], 
 REG_DT, 
 (CASE ACT_CD WHEN 'L' THEN '로그인'
  WHEN 'O' THEN '로그아웃'
  WHEN 'C' THEN '등록'
  WHEN 'R' THEN '조회'
  WHEN 'U' THEN '수정'
  WHEN 'D' THEN '삭제'
  WHEN 'X' THEN '엑셀다운'
 end) AS [사용기능],
 convert(char(10), REG_DT, 120) as RGDATE      --일자로 정렬하기 위해서 날짜만(2007-10-18)
FROM TB07
ORDER BY RGDATE desc, USER_ID asc,  REG_DT asc


값은 이런식으로 나오구요.  admin 127.0.0.1 2007-10-18 14:27  로그인 2007-10-18


convert(char(10), REG_DT, 120) as regdate <- 이것두 문제가 되는거 같긴해요. 이런 변형을 몇만건 데이터에 취해준다는게 좀;
REG_DT 하나로 asc, desc 일케 두번 사용이 안되고, 
시간이 같이 들어간 필드로 정렬하면 그다음 조건이랑(USER_ID) 섞여서 일자로 정렬이 제대로 안되더라구요
(테이블에 log_seq있는데. 그걸 정렬에 이용해봐야하는지. 어차피 그것두 시간순서는 시간순서긴 하니;)

아.. 뭔가 바꿔줘야 할까요?
인덱스를 써야한다면 어떻게 만들어줘야하는지. 영.. 감이 안오네요.
원래 쿼리는 조인두 있는데.
그걸 죄다 빼고 한테이블에서 저런식의 정렬만 처리했는데. 너무 느리네요.
약 이만건데이터에 (조인포함하고)16초 가량;;;;
조언 부탁드립니다.

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

테이블의 데이터 건수가 얼마인지 모르겠지만...

convert 문은 아시는 바와 같이 컬럼의 변형을 가하게 되므로 ....
조회시 문제가 성능 저하 현상이 발생하는 것이 가능합니다. 

테이블의 건수가 많다면....

 order by 도 상당한 부담이 될수 있습니다. 

 order by 는 기본적으로 sorting 이 발생하기 때문에... sorting 을 발생시키지 않게 하기 위해서는

 order by 가 걸려 있는 컬럼들에 대해서 index를 생성해 주시는 것이 좋습니다. 

 조회 조건이 없는 것으로 봐서는 즉 where 조건이 없는 것으로 봐서는 full scan이 주로 발생할 텐데요..

아무 의미 없어도 좋으니... 대체키로 인덱스를 탈수 있는 조건을 가급적이면...
 주시는 것이 좋습니다. 

 mssql 의 경우 테이블에 인덱스가 없거나 하면... lock의 유발도 잦게 되고...
 성능 저하 현상으로 이어 지게 되니..유의 하시기 바랍니다. 

감사합니다.

sqler님이 2007-10-25 15:56에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3815MS-SQL2000 에서 2005 attach시킬때 에러
김경우
2007-10-19
4190
3814시작 날짜와 완료 날짜를 계산해서 걸린시간을 환산하려고 하는데요.. [1]
..
2007-10-19
5089
3813Update를 하는 SP 문제입니다.
헬프미ㅠㅠ
2007-10-18
2883
3812쿼리가 실행시간이 너무 오래걸리네요. [1]
juicinemo
2007-10-18
3765
3810이런 쿼리도 되나요.? 도와주세요 [1]
김인수
2007-10-18
2648
3809데이터검색 명령문 좀알려주세요 [4]
이우혁
2007-10-17
2713
3808엔터프라이즈 메니져에서 입력한 값을 볼려면 어떻게 하나요.
초보
2007-10-17
2245
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다