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나는 열에
- 인덱스라는 이름의 primary_key와 아래와 같은 테이블에 3 비 클러스터 인덱스 (NO 클러스터 인덱스)가은, bgnref, retnum, source_date 을 ENTITY_ID bgnref 열에
- 인덱스라는 idx_bgndte source_date 열에라는 idx_entdte가 ENTITY_ID 0
- 인덱스, source_date
기본적으로 외부 인덱스 (최대 인덱스 idx_entdte에 스캔을 수행 계산) 내부 조회 테이블 스캔 않는다 인덱스를 강제로 실행하면 인덱스 스캔을 수행하고 어떤 것은 여분의 데이터를 에 의해 "데이터 페이지에 I/O 크기 2KB를 사용합니다. 데이터 페이지에 대한 MRU 버퍼 대체 전략. 우리가 SQL 서버에있는 "찾아"
내 생각 엔이 동일합니다. " 난 그냥 내가 성능 향상을 얻을 무엇을 할 수 있는지 궁금 해서요 성능 향상을 볼 수 없습니다 인덱스를 강제 후.
내가 할 수있는 생성/떨어 뜨릴/수정 인덱스와 같은 테이블에 변경을하지.
그냥 SQL 서버 작업에 조회의 아이디어를 제공 할 수 있습니다.가정 해 보겠습니다 우리가 4 개 기록 테이블의 직원이있다.
쿼리에서 Emp_id의 비 클러스터 인덱스를 사용하는 경우 리프 노드에 도달하고 실제 데이터를 얻으려면 포인터를 사용하여 힙의 실제 데이터 (행)를 읽습니다. 포인터를 사용하는이 프로세스를 LookUp이라고합니다.
무엇을 찾고 싶습니까? 인덱스의 source_date는 두 번째 또는 네 번째 열입니다. –
첫 번째 컬럼으로'source_date'를 가진 인덱스가 없다면, 엔진이 아무 것도 찾을 수있는 방법이 없습니다. – Paciv
@ ta.speot.is는 다른 작업을 수행 할 수 있으므로 쿼리 성능이 향상됩니다. – Pritesh