2012-08-17 4 views
2

Sybase 쿼리를 최적화하려는 SQL Server 개발자입니다. 나는 비 클러스터 인덱스를 찾고자하는데, 스캔을 계속하고있다. 단지 Sybase에서 가능한 "탐색"이 가능한지를 확인하고 싶다면 예. 비 클러스터 인덱스 검색을 수행하는 방법?Exclusion plan에서 Sybase가 SQL Server와 같은 인덱스 찾기 작업을 수행합니까?

는 I 아래 같은 쿼리를 (*이며 실제로 일부 32 열)

가 t를 선택한다. * dbo.g1_positions t WHERE t.source_date = (g1_positions에서 최대 (source_date)을 선택)

FROM

나는 열에

  1. 인덱스라는 이름의 primary_key와 아래와 같은 테이블에 3 비 클러스터 인덱스 (NO 클러스터 인덱스)가은, bgnref, retnum, source_date
  2. 을 ENTITY_ID bgnref 열에
  3. 인덱스라는 idx_bgndte source_date 열에라는 idx_entdte가 ENTITY_ID 0
  4. 인덱스, source_date

기본적으로 외부 인덱스 (최대 인덱스 idx_entdte에 스캔을 수행 계산) 내부 조회 테이블 스캔 않는다 인덱스를 강제로 실행하면 인덱스 스캔을 수행하고 어떤 것은 여분의 데이터를 에 의해 "데이터 페이지에 I/O 크기 2KB를 사용합니다. 데이터 페이지에 대한 MRU 버퍼 대체 전략. 우리가 SQL 서버에있는 "찾아"

내 생각 엔이 동일합니다. " 난 그냥 내가 성능 향상을 얻을 무엇을 할 수 있는지 궁금 해서요 성능 향상을 볼 수 없습니다 인덱스를 강제 후.

내가 할 수있는 생성/떨어 뜨릴/수정 인덱스와 같은 테이블에 변경을하지.

그냥 SQL 서버 작업에 조회의 아이디어를 제공 할 수 있습니다.

가정 해 보겠습니다 우리가 4 개 기록 테이블의 직원이있다.

enter image description here

쿼리에서 Emp_id의 비 클러스터 인덱스를 사용하는 경우 리프 노드에 도달하고 실제 데이터를 얻으려면 포인터를 사용하여 힙의 실제 데이터 (행)를 읽습니다. 포인터를 사용하는이 프로세스를 LookUp이라고합니다.

+2

무엇을 찾고 싶습니까? 인덱스의 source_date는 두 번째 또는 네 번째 열입니다. –

+1

첫 번째 컬럼으로'source_date'를 가진 인덱스가 없다면, 엔진이 아무 것도 찾을 수있는 방법이 없습니다. – Paciv

+0

@ ta.speot.is는 다른 작업을 수행 할 수 있으므로 쿼리 성능이 향상됩니다. – Pritesh

답변

1

가능합니다!

테이블 스캔이 더 좋으므로 사용하지 않는 것으로 추정됩니다. 통계가 꺼져 있기 때문일 수 있습니다! Update them as well.

추가 정보 확인을 위해 인덱스를 강제로 사용할 수 있습니다 (this example).

+0

색인을 강제 실행할 때 "비 클러스터 색인 스캔"을 수행 중입니다. 내 시나리오를 설명하기 위해 질문을 편집했습니다. – Pritesh

+0

@Pritesh 저는 Sybase 직원입니다. SQL Server pls에서 조회가 어떻게 작동하는지 설명해 주시겠습니까? –

+0

에 조회 세부 정보가 추가되었습니다. 한번 봐주세요. – Pritesh