2012-10-09 2 views
0

초보자입니다. 인덱스를 생성해야하는 정확한 열이 무엇인지에 대해 알려 드리고자 실행하는 데 너무 많은 시간이 걸리는이 SQL 식에 대한 인덱스를 만들고 싶습니다. DB2 db를 사용하고 있지만 그 질문은 매우 일반적이라고 생각하지 않습니다.SQL 식에 대해 데이터베이스 INDEX를 만드는 방법은 무엇입니까?

내 SQL 표현은 다음과 같습니다

select * from incident where (relatedtoglobal=1) 
and globalticketid in (select ticketid from INCIDENT where status='RESOLVED') 
    and statusdate <='2012-10-09 12:12:12' 

내가이 5 열이나 방법에 인덱스를 생성해야 하는가?

감사

답변

1

당신은 WHERE, ORDER BY와 GROUP BY 절에 공통되는 열의 인덱스를 만들 수 있습니다. 당신은 다른 테이블을 관련하는 데 사용되는 colums에 인덱스를 추가하는 것도 고려해 볼 수 있습니다

예 (A, 예를 들어, 가입을 통해) : 여기

SELECT col1,col2,col3 FROM my_table WHERE col2=1 

, COL2에 인덱스를 생성하면이 쿼리에게 많은 도움이 될 것이다.

또한 인덱스 선택도를 고려하십시오. 간단히 말해서 "큰 도메인"(즉, ID, 이름 등)이있는 값에 대한 색인을 만듭니다. 남성/여성 열에는 만들지 마십시오. 또한

, 이러한 참조를 확인하십시오 chosing 열을 인덱스 - http://docs.oracle.com/cd/E11882_01/server.112/e16638/data_acc.htm#i2769
선택 인덱스 전략 : http://docs.oracle.com/cd/B10501_01/appdev.920/a96590/adg06idx.htm

+0

죄송하지만 select col1, col2, col3 ...으로 쿼리를 시작할 수 없습니다. SELECT *로 시작해야합니다 ...나는 바꿀 수 없다. – Dejan

+0

ticketid는 220000 개의 다른 값에 대한 큰 도메인이다. – Dejan

+0

col2는 내 케이스에 globalticketid가있다. (상황 선택 : 'RESOLVED'에서 우발적으로 ticketid를 선택한다.) globalticketid와 티켓 ID 또는 두 개의 인덱스 하나는 ticketid 만 포함하고 하나는 globalticketid 만 포함합니다. – Dejan

2

질문 :

select * 
from incident 
where relatedtoglobal = 1 
    and globalticketid in (select ticketid 
          from INCIDENT 
          where status='RESOLVED' 
         ) 
    and statusdate <='2012-10-09 12:12:12' ; 

그리고 내부의 서브 쿼리 :

select ticketid 
from INCIDENT 
where status='RESOLVED' 
  • (status, ticketid)에 대한 색인은 서브 u 리 평가 W 조회의 효율성을 확실히 =습니다.

  • 쿼리의 경우 이전 인덱스 외에 인덱스가 하나 더 있어야합니다. (relatedtoglobal, globalticketid)이면 충분할 수 있습니다.

더 복잡한 인덱싱을 DB2 엔진에서 사용할 수 있는지 여부는 확실하지 않습니다. (relatedtoglobal, globalticketid) INCLUDE (statusdate)에 하나

  • 두 지수처럼

    • , (relatedtoglobal, globalticketid)에, 하나는 (relatedtoglobal, statusdate)


    DB2 문서는 쉽게 읽기 아니지만 많은 세부 사항이있다. CREATE INDEX 문과 Implementing Indexes으로 시작하십시오.

  • +0

    도움이 답변을 주실 수는 있지만 ... 색인은 무엇입니까? – Dejan

    +0

    인덱스 = 인덱스 –

    +0

    고맙습니다 .. 만들 수있는 최대 인덱스를 아는 방법은 무엇입니까? 왜냐하면 나는 그들이 업데이트 업데이트 삭제를 느리게 할 것이기 때문에 ... 내 응용 프로그램을 느리게 할 시스템에 대한 최대 값을 깨지 않게하는 방법 – Dejan