programing

Oracle에서 SQL 실행 계획을 보려면 어떻게 해야 합니까?

javajsp 2023. 6. 8. 19:22

Oracle에서 SQL 실행 계획을 보려면 어떻게 해야 합니까?

저는 지금 데이터베이스 인덱스에 대해 배우고 있으며, 데이터베이스 인덱스를 사용하는 효율성을 이해하려고 노력하고 있습니다.

  • 특정 쿼리가 인덱스를 사용하는지 확인하고 싶습니다.
  • 실제로 인덱스를 사용하여 쿼리를 실행하는 것과 인덱스를 사용하지 않고 실행하는 것의 차이를 확인하고 싶습니다.

저는 sql+사용하고 있습니다.

실행 계획을 보려면 어떻게 해야 하며 인덱스가 사용되었는지 여부를 알려주는 정보는 어디에서 찾을 수 있습니까?

이 코드를 사용하여 먼저 설명한 후 계획을 확인해 보십시오.

계획 설명:

explain plan 
for 
select * from table_name where ...;

계획 보기:

select * from table(dbms_xplan.display);

편집: 브래킷을 제거했습니다.

예상 SQL 실행 계획

예상 실행 계획은 SQL 쿼리를 실행하지 않고 Optimizer에 의해 생성됩니다.EXPLEX PLAN FOR를 사용하여 SQL 클라이언트에서 예상 실행 계획을 생성하거나 이 작업에 Oracle SQL Developer를 사용할 수 있습니다.

다음에 대한 계획 설명

Oracle을 사용할 때 다음을 추가할 경우EXPLAIN PLAN FOR지정된 SQL 쿼리에 대한 명령, 데이터베이스는 예상 실행 계획을 관련된PLAN_TABLE:

EXPLAIN PLAN FOR
SELECT p.id
FROM post p
WHERE EXISTS (
  SELECT 1
  FROM post_comment pc
  WHERE
    pc.post_id = p.id AND
    pc.review = 'Bingo'
)
ORDER BY p.title
OFFSET 20 ROWS
FETCH NEXT 10 ROWS ONLY

예상 실행 계획을 보려면 다음을 사용해야 합니다.DBMS_XPLAN.DISPLAY다음 예제에 표시된 대로:

SELECT *
FROM TABLE(DBMS_XPLAN.DISPLAY (FORMAT=>'ALL +OUTLINE'))

ALL + OUTLINE 형식 지정 옵션을 사용하면 기본 형식 지정 옵션을 사용하는 것보다 예상 실행 계획에 대한 자세한 정보를 얻을 수 있습니다.

Oracle SQL 개발자

SQL Developer를 설치한 경우 EXPLEX PLAN FOR 명령을 추가하지 않고도 SQL 쿼리에 대한 예상 실행 계획을 쉽게 얻을 수 있습니다.

여기에 이미지 설명 입력

##실제 SQL 실행 계획

실제 SQL 실행 계획은 SQL 쿼리를 실행할 때 Optimizer에 의해 생성됩니다.따라서 예상 실행 계획과 달리 실제 실행 계획을 얻으려면 SQL 쿼리를 실행해야 합니다.

테이블 통계가 기본 관계형 데이터베이스에 의해 적절하게 수집된 경우 실제 계획은 추정된 계획과 크게 다르지 않아야 합니다.

GATE_PLAN_STATistics 쿼리 힌트

Oracle이 지정된 SQL 쿼리에 대한 실제 실행 계획을 저장하도록 지시하려면 다음을 사용합니다.GATHER_PLAN_STATISTICS쿼리 힌트:

SELECT /*+ GATHER_PLAN_STATISTICS */
  p.id
FROM post p
WHERE EXISTS (
  SELECT 1
  FROM post_comment pc
  WHERE
    pc.post_id = p.id AND
    pc.review = 'Bingo'
)
ORDER BY p.title
OFFSET 20 ROWS
FETCH NEXT 10 ROWS ONLY

계획을 하려면 실실행계시려면다사수있다용습니할음을을 사용하면 됩니다.DBMS_XPLAN.DISPLAY_CURSOR:

SELECT *
FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT=>'ALLSTATS LAST ALL +OUTLINE'))

모든 쿼리에 대해 통계 사용

세션 지된세내생성모된쿼대든실한계리가행획져다면있수니습다설정음할을려오을정션을 하면 됩니다.STATISTICS_LEVELALL로: "" "ALL"":

ALTER SESSION SET STATISTICS_LEVEL='ALL'

이는 다음을 설정하는 것과 동일한 효과를 발휘합니다.GATHER_PLAN_STATISTICS모든 실행 쿼리에 대한 쿼리 힌트.그래서, 마치 그것과 같이.GATHER_PLAN_STATISTICS 힌트, 힌트를 사용할 수 .DBMS_XPLAN.DISPLAY_CURSOR실제 실행 계획을 확인합니다.

.STATISTICS_LEVEL원하는 실행 계획을 수집한 후 기본 모드로 설정합니다.이는 특히 연결 풀링을 사용하고 데이터베이스 연결이 재사용되는 경우에 매우 중요합니다.

ALTER SESSION SET STATISTICS_LEVEL='TYPICAL'

Descel Plan을 보세요. EXPLE은 여러 DB 유형에 걸쳐 작동합니다.

sqlPlus에 대한 자세한 내용은 sqlplus의 AUTO TRACE 기능을 참조하십시오.

사용해 보십시오.

http://www.dba-oracle.com/t_explain_plan.htm

실행 계획은 사용될 때마다 인덱스를 언급합니다.실행 계획을 읽어 보십시오.

언급URL : https://stackoverflow.com/questions/11799344/how-can-i-see-the-sql-execution-plan-in-oracle