oracle의 select 쿼리에서 index를 사용하는 방법은 무엇입니까? 인덱스를 만들 때 성능을 향상시킬 수 있습니까?오라클의 인덱스 사용
명시 적으로 색인을 사용하는 방법은 무엇입니까?
oracle의 select 쿼리에서 index를 사용하는 방법은 무엇입니까? 인덱스를 만들 때 성능을 향상시킬 수 있습니까?오라클의 인덱스 사용
명시 적으로 색인을 사용하는 방법은 무엇입니까?
정말 정말 당신을 나쁜 실행 계획을 제공하고
SELECT /*+ INDEX(mytable myindex) */ foobar from mytable
을하지만은 최후의 수단이어야합니다 할 수 있습니다 사용자 최적화 힌트 (매우 드물게 발생,하지만 그런 일이)가 어떤 인덱스를 사용하는 얘기를 해. 그렇게하기 전에
execute dbms_stats.gather_table_stats('myschema','mytable')
을 사용하여 오라클이 테이블을 분석하도록하십시오. 잘하면 인덱스를 언제 사용하는지 알 수 있습니다.
선택 쿼리에서 인덱스를 사용하기 위해 아무 것도 할 필요가 없습니다. 오라클은 쿼리 수행에 가장 적합한 인덱스를 결정합니다. 색인은 원하는 데이터에 대한 지름길을 제공하여 일부 쿼리 (전부는 아님)에서 성능을 향상시킵니다. Oracle Concepts Guide 의 색인을 읽어야합니다 - "색인 개요"섹션을 읽으십시오.
일반적으로 인덱스를 사용하기 위해 쿼리에서 아무 말도하지 않아도됩니다. 오라클의 계획 평가자는 쿼리를 실행하는 가장 좋은 방법을 선택할 것입니다. 관계형 데이터베이스에 대한 Codd의 원칙 중 하나입니다.
인덱스를 만들 때 성능을 향상시킬 수 있습니까?
몇 가지 시나리오. 당신이 기준을 검색 할 때
select * from foo where field = 121
, 그것은 도움이 될 것입니다) 결과. (예 : select * from foo order by field
, 그것은 당신의 테이블이 큰 경우에 도움이 될 것입니다 그리고 당신은 필드에 인덱스가)의 경우 오라클에서
데이터베이스 버전 및 특정 매개 변수 설정에 따라 'DBMS_STATS.GATHER_TABLE_STATS'를 호출하면 인덱스 통계가 자동으로 수집되지 않을 수 있습니다. 어떤 경우에는'DBMS_STATS.GATHER_INDEX_STATS'를 사용하거나 명시 적으로'CASCADE' 매개 변수를 설정해야합니다 :'execute dbms_stats.gather_table_stats ('myschema', 'mytable', cascade => TRUE)' – APC