어떤 SQL 쿼리를 내게 보여주는 테이블과 테이블에 사용되는 인덱스에서 볼 수 Informix?

StackOverflow https://stackoverflow.com/questions/307983

  •  08-07-2019
  •  | 
  •  

문제

어떤 SQL 쿼리를 내게 보여주는 테이블&에 사용되는 인덱스에서 볼 수 Informix?

내가 알고있는 방법을 찾기 위해"원래 문을 만들에 대한"에서 보기 SYS_VIEWS 지만,필요로 하는 인간의 뇌 검색/grokking 는 선택합니다.내가 믿고 찾을 수 있습니다면 테이블을 인덱싱하면 그들은 확인되었습니다.

배경:나는 확실히 하는것을 필요로 하는 몇 가지 중요한 전망을 가리킨류(예:후저)테이블이 있습니다.너무 자주 보았망을 가리키는 오래된 백업 테이블,는 더 이상 없었 색인,그리고 영원하는 쿼리가 있습니다.

나를 확인할 필요가 이러한 쿼리를 정기적으로"나"튜닝 DBA 를 다시 뷰/인덱스입니다.

도움이 되었습니까?

해결책

테이블 sysdepend 문서를 보기에 의존한다는 것을 설명합니다.열습니다:

  • btabid-기본 테이블의 ID 번호
  • btype-일반적으로 T 에 대한 테이블 또는 V 를 보기
  • dtabid-의존 표 ID 번호
  • dtype-일반적으로 T 에 대한 테이블 또는 V 를 보기

따라서,주어진 뷰와 함께 tabid N,을 작성할 수 있습니다:

SELECT b.owner, b.tabname, d.*
    FROM "informix".systables b, "informix".sysdepend d
    WHERE d.dtabid = N
      AND d.btabid = b.tabid;

당신만 알고 보기 이름을 파악하는 것 보기 tabid 놀라 울 정도로 까다로운 경우에는 데이터베이스 모드는 ANSI 데이터베이스가 있는 여러 테이블 동 테이블 이름(나 보기 이름을 경우)그러나 각각 다른 소유자입니다.그러나,일반적인 경우(non-ANSI 데이터베이스,또는 고유한 테이블/보기 이름)쿼리가 쉽게 충분히:

SELECT b.owner, b.tabname, d.*
    FROM "informix".systables b, "informix".sysdepend d
    WHERE d.dtabid = (SELECT v.tabid FROM "informix".systables v
                         WHERE v.tabname = "viewname"
                     )
      AND d.btabid = b.tabid;

질문에 대해 묻는 인덱스에 의해 사용됩니다.인덱스는 사용하지 않으로 보기,per se;인덱스에 의해 사용되는 쿼리를 엔진 쿼리를 처리할 때만 사용되는 인덱스에 따라 변경될 수 있습 총 쿼리도록-다른 인덱스로 사용할 수 있습니다 이 두 가지 쿼리:

SELECT * FROM SomeView;

SELECT * FROM SomeView
    WHERE Column1 BETWEEN 12 AND 314;

되는 인덱스를 사용될 것이 기록 되지 않은 어디에서나 이 시스템 카탈로그그들은 redetermined 시 동적으로 문을 준비했습니다.

질문한 사항:

배경:나는 확실히 하는것을 필요로 하는 몇 가지 중요한 전망을 가리킨류(예:후저)테이블이 있습니다.너무 자주 보았망을 가리키는 오래된 백업 테이블,는 더 이상 없었 색인,그리고 영원하는 쿼리가 있습니다.

당신은 어떻게 귀하의 조직 개편?당신은 당신을 만들 새로운 테이블을 원하는 구조,데이터를 복사에서 오래된 새로운 다음,이름을 변경 된,이름을 바꾸는 새로운?는 것 설명-테이블에 이름을 바꾸는 재작업 전망을 참조하는 테이블.어떤 형태의 조직 개편은 당신이 하고 있는가?을 사용할 수 있는 다른 기술인가?고 대역을 사용하는 것입 ALTER INDEX 매개 변수 클러스터(한 후 그것을 변경하지 않는 클러스터 이미 클러스).이 테이블을 다시 작성 및 인덱스-지 않고 보니다.또는,고려할 수 있습니다 ALTER 조각 작업입니다.

그것은 또한 보상을 계속 이전 테이블 주위에.는 제안 당신의 개편은 더 많은 질문이 떨어지는 오래된 데이터입니다.어쩌면 당신은 한 조각의 표 날짜에 의해 범위,그래서 당신을 분리하고 조각에 도달했을 때 그의 생활에 유용한 날짜.떨어지는 테이블의 것 또한 드롭다는 전망에 따라 보장,당신을 다시 보는 새로운 테이블의 이름입니다.

또 다른 대안을 따라서,간단하게도록 개편 방울을 재현하실 수 있습니다.

나를 확인할 필요가 이러한 쿼리를 정기적으로"나"튜닝 DBA 를 다시 뷰/인덱스입니다.

걱정이다...단지는 것의 부분 표준 절차를 완료하기위한 조직 개편에 있습니다기본적으로,당신은 버그를 보고하는 절차를 보장하지는 않는다는 전망은 완벽하게 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top