Q&A

  • SQL 문장이 실행이 안돼네요...??
얼마 전까지 실행 되던 문장인데 갑자기 실행되지 않네요.
그렇다고 특별히 에러도 발생하지 않습니다. 계속 Running 중이죠..

SELECT COUNT(*) AS JOB_CNT
FROM HKJ900
WHERE SUBSTR(LOG_DATE,1,8) BETWEEN '20040801' AND '20040810'
     AND IO_GBN IN ('1', '2')    
    
HKJ900 Table Field는
IO_GBN      VARCHAR2(1)    <= 1 or 2 or 6
LOG_DATE VARCHAR2(14)   <= 년월일시분초(20040810101112)
....
입니다.

아래문장 AND IO_GBN IN ('1', '2')을 주석처리 했을때는 실행됩니다.

DB : Oracle 9i
3  COMMENTS
  • Profile
    성더기 2004.08.12 01:05


    그냥 OR 를 쓰는게 더 간단하지 않나요?
    굳이 IN을 쓰시는 이유라도....
  • Profile
    착한천사 2004.08.15 03:41
    SQL문장상으로는 이상함이 보이질 않는군요..
    IO_GBN에서 문제가 생겼다니..
    이것만으로는 이해가 되지 않겠습니다..
    혹시, IO_GBN에 숫자로 1,2,6으로 입력시킨것이 아닙니까?
    그래서, 자동 Type Cast CONVERTING이 되지 않아서..
    그러한 현상이 나타나는지.. 확인해 보시는게 좋겠습니다..
    일단, SQL상으로는 문제가 없을 듯 합니다..
    그리고, OR보다는 IN이 더 빠른 속도를 내므로
    한 Field에 여러가지 조건이 걸리게 되면, IN을 사용하는 버릇을
    들여야 합니다.
    Oracle 9i라고 하시니 상당한 Skill을 보유하시고 계실수도 잇겠네요..
    Oracle 9i에는 상당한 기능이 많이 들어 있어서..
    관리만 잘하신다면, 엄청난 이득(?)을 가져올 겁니다..
    아.. 각설하구요..
    혹시, SQL Plus에서 그러한 현상이 나타난다는 겁니까?
    아니면, Application에서 그러한 현상이 나타난다는 것입니까?
    아니면, 둘다 나타난다는 것인지..
    그것을 알면 더욱 좋겠군요..

    ps.
    io_gubun을 넣으면, 계속실행중이라는건..
    Lock이 걸려있을수도 있으니 확인해 보시기 바랍니다..
    그렇지 않다면, 검색은 되는데..
    Full Searching이 일어나서 검색하는 시간이 많이 걸릴수도 있구요..
    substr을 쓰는것 보니까..
    function based Index를 사용할 가능성이 많군요..
    만약 그렇지 않다면, 사용해 보시는걸 추천하구요..
    계속 Running중이라면,
    Applicatioin 쪽입니까? SQL Plus 쪽입니까?
    이것도 궁금하네요..
    답변하는데.. 궁금증이 더 생기는군요..




  • Profile
    nilriri™ 2004.08.21 05:21
    지나가다가 한마디 적습니다..