Nana

Disponível somente no TrabalhosFeitos
  • Páginas : 5 (1119 palavras )
  • Download(s) : 0
  • Publicado : 17 de março de 2011
Ler documento completo
Amostra do texto
| | |
| | |
| | |
| | |
| | Oracle - Junções: Condições e Métodos I |
|
Publicado em: 23/08/2005 |
|
Compartilhe |
|
Durante a construção de consultas SQL é comum surgir a necessidade de extrair informações de diferentes fontes de dados para gerar o resultado. Esta operação, chamada junção, necessita que o desenvolvedor informe os critérios para realizar ajunção destas fontes. Estes critérios são definidos na cláusula WHERE de um comando e são chamados de “condições de junção”.Este artigo pretende descrever as diferentes condições de junção que os desenvolvedores podem escrever e os métodos utilizados pelo otimizador para gerar o resultado.Como o Oracle realiza as junçõesPara resolver um comando com mais de uma fonte de dados, o Oracle,primeiramente, determina a melhor forma de acesso aos dados de cada fonte isoladamente. Em seguida, faz a junção das fontes em pares, mesmo que a consulta possua mais fontes. O Oracle determina o par mais vantajoso para iniciar a junção e, após concluir a primeira operação, busca uma nova fonte para realizar a junção com o resultado anterior. Este processo se repete até que todas as fontes tenham sidoutilizadas.-------------------------------------------------
SELECT e.first_name, e.last_name, d.department_name, j.job_title-------------------------------------------------
FROM employees e, departments d, jobs j-------------------------------------------------
WHERE e.department_id = d.department_id-------------------------------------------------
AND e.job_id = j.job_idListagem 1 - Consultaem várias fontes de dadosPor exemplo, para resolver a consulta definida na Listagem 1, o Oracle analisa a melhor forma de acesso aos dados nas tabelas “employees”, “departments” e “jobs”.,Em seguida, procura a melhor ordem de unir estas informações. Neste exemplo, a melhor ordem encontrada é unir primeiramente as tabelas “jobs” e “employees”. Somente após encontrar o resultado desta junção é quea tabela “departments” será acessada. O Oracle realiza a junção desta tabela com o resultado obtido na junção anterior para gerar o resultado final. A ordem das operações é ilustrada pela Figura 1.Figura - Ordem de junçãoCondições de JunçãoAs condições de junção são definidas na cláusula WHERE, como qualquer outra condição da consulta, e possuem influência direta sobre a escolha do método dejunção que será realizado pelo otimizador. O que as torna diferentes das demais condições, é que elas são utilizadas para realizar a união entre os dados contidos nas diferentes fontes. Para executar a junção, o Oracle combina os registros das fontes, formando um único registro contendo os campos definidos na cláusula SELECT.Conforme as condições de junção definidas pelos desenvolvedores, é possívelobter os tipos de junção:Junções simples (simple-join) – A consulta retornará apenas os registros que atendem às condições definidas nas fontes de dados;Junções externas (outer join) – Semelhante à junção simples, porém retornará também os registros da fonte de dados externa que não estão presentes na fonte interna;Produtos cartesianos – Retorna toda a combinação de registros das duas fontes de dados,uma vez que não existe nenhuma restrição definida na cláusula WHERE.Métodos de JunçãoO método de junção utilizado para resolver uma consulta será definido pelo otimizador do Oracle. Para tomar esta decisão, ele se baseia em algumas características da consulta, como as condições de junção definidas na cláusula WHERE e o custo de acessar as fontes de dados existentes. Fatores físicos, como o espaçodestinado para operações hash ou de ordenação dos dados também podem influenciar a escolha do método.As primeiras verificações realizadas pelo servidor são as existências das constraints UNIQUE e PRIMARY KEY e de condições de junção externa. Caso as constraints estejam presentes, o otimizador busca resolvê-las em primeiro lugar por questões de desempenho. Já as condições de junção externa...
tracking img