Thursday, May 13, 2010

Oracle - SQL - Execution Plan - Merge Join Cartesian

Muitas e muitas vezes recebi reclamação dos meus amigos desenvolvedores sobre SQL lento.
Aí quando você pede o SQL pra dar uma olhada e faz um "simples " explain plan,que é simples mas com muitas informações realmente importantes para quem escreve SQL,você encontra um MERGE JOIN CARTESIAN ou coisa do tipo.

Minha experiência.Dificilmente precisei fazer um Cartesian Join na minha vida e mais dificil ainda encontrei alguem que criou o SQL me dizer o motivo "daquilo" ou de aquilo está acontecendo.Na maioria das vezes é falta de condição/predicados de join entre as tabelas.E com uma simples conferencia você acha o erro.Pode existir outras causas remotas,mas em 90 e tantos % das vezes é SQL mal escrito.

Como esta semana recebi mais uma vez  um caso destes ,resolvi postar  o ocorrido e alertar para quem não conhece o principal moitvo do fato ocorrer!

A SQL é usada para manipulação de dados em um banco de dados relacional,sempre tenha definido o que você precisa trazer bem como as condições que você deve "setar" no código para trazer somente o que você realmente precisa.E sempre veja o plano de execução para ver se tem como melhorar!
Escreva o SQL fazendo os ajustes necessários,no final o resultado é bem mais satisfatório!

No comments: