2011-01-03 3 views
0

더 나은 쿼리 성능을 얻기위한 기술을 구현하라는 요청을 받았으며 이는 나에게 매우 새롭다.쿼리 성능 튜닝

기술은 다음과 같습니다

위의 쿼리에서
SELECT tab1.col1 
FROM tab1, tab2 
WHERE tab1.col1 = tab2.col2 
AND tab2.col3 = 'X' 
AND tab1.col4 = 'Y'; 

,

  1. 나는 위에서 사용 된 것들에 대한 참조 테이블 TAB2에 대한 TAB1 및 tab4에 대한 tab3에 말한대로 두 테이블을 작성해야합니다.
  2. tab1과 tab2의 PK 값을 각각 tab3과 tab4에 삽입하십시오.
  3. tab3과 tab4 모두에서 'condition1'이라고 말한 후 위 쿼리에서 가져온 레코드의 PK 값으로 업데이트하십시오.
  4. 'condition1'IS NOT NULL 열에 대한 확인이있는 쿼리에서 tab3 및 tab4를 사용하십시오.
  5. 원본 테이블의 DML에서이 열을 업데이트하려면 트리거를 씁니다.

이 한 눈에 간단하게 보일 수도 있지만, 같은 테이블이 다른 술어로 N 쿼리에서 사용하는 경우, 나는 새 테이블 및 해당 트리거의 열 N 번호를 추가해야합니다.

저는 이것이 데이터의 중복이며 데이터베이스에 대한 막대한 부담이라고 생각합니다. 그리고 이것은 성능 향상에 기여하지 않습니다.

내가 이것을 구현하는 딜레마에서 벗어나도록 도와 주면 좋을 것입니다. 제대로 인덱스를 사용하고 있는지 사전에

덕분에, Savitha

+3

동료가 데이터베이스 개발의 초보자이며 오라클 컨설턴트에게 심각한 도움이 필요하다고 생각합니다. 이 데이터베이스의 최종 목적은 무엇이며 하루에 몇 행을 추가 할 것입니까? 나는 의미심장하지 않고 잔인하게도 정직한 사람이 되고자합니다. 때로는 우리가 제공 할 수있는 최선의 도움은 당신에게 조금이라도 도움이 필요하다는 것을 말해주는 것입니다. –

답변

2

당신은 확인 했습니까?

+0

아직 색인을 생각하지 않았습니다! 나는 위의 기술을 구현해야하는데, 나는 데이터베이스에서 실수를 느낀다. – Savitha

+0

질문에 대답하지 않고 질문하는 중 의견이있는 경우 –

+0

해야합니까? 당신의 본능이 옳다고 생각합니다, Savitha, 동료가 제시 한 것을 구현해서는 안됩니다. 인덱스 및 좋은 데이터베이스 아키텍처에 대해 읽어보십시오. 그러면 더 나은 방법을 보여줄 수 있습니다. – ScottCher

1

이런 종류의 성능 조정은 나쁜 생각처럼 보입니다. 인덱스 시스템을 재현하는 어리석은 방법처럼 보입니다. 나는 그것을 반대 할 것이다.