"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > INNER JONE VS. WHERE CLUSE no Oracle: Qual é a diferença de desempenho real?

INNER JONE VS. WHERE CLUSE no Oracle: Qual é a diferença de desempenho real?

Postado em 2025-02-11
Navegar:981

Inner Join vs. WHERE Clause in Oracle: What's the Real Performance Difference?

inner participa no oracle com onde a cláusula

]

No banco de dados Oracle, a diferença entre unir duas tabelas usando uma rede (junção interna) e uma cláusula onde é um problema comum. Embora possa haver pequenas diferenças entre os dois em determinadas situações, as diferenças gerais de desempenho geralmente são insignificantes.

o seguinte exemplo:

Select * from Table1 T1 
Inner Join Table2 T2 On T1.ID = T2.ID

assim como

Select * from Table1 T1, Table2 T2 
Where T1.ID = T2.ID

Ambas as consultas executam a mesma operação: Concatenate linhas na Tabela1 com linhas na Tabela2 com base na igualdade da coluna ID. Para entender melhor isso, vamos criar duas tabelas de amostra:

CREATE TABLE table1 (
  id INT,
  name VARCHAR(20)
);

CREATE TABLE table2 (
  id INT,
  name VARCHAR(20)
);

Execute o plano de execução para consulta usando as conexões:

-- 使用内连接
EXPLAIN PLAN FOR
SELECT * FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id;

SELECT *
FROM TABLE (DBMS_XPLAN.DISPLAY);

... obtenha a seguinte saída:

-- 0 select statement
-- 1 hash join (access("T1"."ID"="T2"."ID"))
-- 2 table access full table1
-- 3 table access full table2

Da mesma forma, o plano de execução de uma consulta usando a cláusula where:

-- 使用 WHERE 子句
EXPLAIN PLAN FOR
SELECT * FROM table1 t1, table2 t2
WHERE t1.id = t2.id;

SELECT *
FROM TABLE (DBMS_XPLAN.DISPLAY);

... retorna a seguinte saída:

-- 0 select statement
-- 1 hash join (access("T1"."ID"="T2"."ID"))
-- 2 table access full table1
-- 3 table access full table2

você pode ver que ambas as consultas usam conexões de hash para executar operações de conexão e não há diferença significativa no plano de execução.

, portanto, optar por usar uma jóia intra ou uma cláusula onde o Oracle depende principalmente de preferências pessoais ou das necessidades específicas do esquema do banco de dados ou da consulta usada.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3