인덱스에 대한 B- 트리 수준을 확인하려고했는데 놀랍게도 일부는 null로 설정되어 있습니다.
SELECT index_name, blevel FROM user_indexes ORDER BY 2 desc;
이름은 “SYS_”로 시작합니다 (아래 사진 첨부). 그래서 나는 그것들이 시스템 생성 인덱스라고 가정하고 있습니까? 아마도 기본 키일까요? 왜 그들이 null인지 궁금합니다. 값이 0이면 모든 것이 리프 노드에 있고 고유 한 스캔이 데이터를 가져 오는 데 1 홉이 소요됨을 의미합니다.
댓글
답변
SYS_IL..
로 시작하는 이름은 LOB 인덱스입니다.
BLEVEL
는 B- 트리 인덱스의 속성이며 그렇지 않습니다. LOB 인덱스에 적합합니다.
통계를 수집하더라도 이러한 인덱스에 대한 BLEVEL
는 null로 유지됩니다.
답변
@Balazs에게 정보를 제공해 주셔서 감사합니다.
이에 대한 조사를했는데 다음과 같이 보입니다.-
lob은 단순히 포인터이며 해당 lob을 만드는 데이터 덩어리를 가리 킵니다. 따라서 lob 열을 만들 때 자동으로 lob 인덱스를 가져 와서 lob 데이터 청크를 더 빠르게 검색하고이 데이터 청크를 보유하는 세그먼트를 확인합니다.
다음 쿼리를 사용하여 동일한 지 확인합니다.-
SELECT index_name,INDEX_TYPE, blevel FROM user_indexes where blevel is null and index_name like "SYS_IL%%" ORDER BY 3 desc;
연결된 세그먼트를 보려면-
select segment_name, segment_type, tablespace_name, bytes, max_extents from user_segments where segment_name in ( SELECT index_name FROM user_indexes where blevel is null and index_name like "SYS_IL%%" );
LOB 열이있는 테이블을 삭제하거나 열 자체입니다.
*_indexes
문서에있는 많은 통계 열 (blevel 포함)의 경우 " 열 이름 뒤에 별표가 오는 것은 ANALYZE 문 또는 DBMS_STATS 패키지를 사용하여 인덱스에 대한 통계를 수집하는 경우에만 채워집니다. " 엔진이 ' 일부 또는 모든 시스템 테이블 인덱스에 대해 이러한 명령 중 하나를 실행하지 않는 것 같습니다 …