Dica para tuning de queries para iniciantes
Muitas vezes nos chegam com uma query dizendo “tá lento, o que dá pra fazer?” e jogam a query. E agora, o que fazer? Bom, será preciso realizar o tunning dela, mas por onde começar?
Aqui dou algumas dicas:
Primeiro é preciso ver o plano de execução da query usando o comando “explain plan” no SQL Plus ou visualizar o plano de execução pelo Oracle SQL Developer.
Através do SQL*Plus pode-se chegar ao plano de execução da seguinte forma:
SQL> explain plan for <query>;
SQL> SELECT * FROM table(dbms_xplan.diplay);
Já pelo Oracle SQL Developer pode-se visualizar o plano de execução selecionando a query e pressionando o botão F10.
Para analisar a query vão algumas dicas:
1) Ler o plano de execução e determinar os pontos do plano que possuem maiores custos. Estes pontos devem ser analisados na query;
2) Verificar os sorts existentes como group by e order by eles podem necessitar de uma grande área temporária;
3) Hints. As hints nem sempre ajudam na execução das queries. Muitas vezes elas podem atrapalhar. O ideal é que o otimizador possa sozinho determinar o melhor plano de execução;
4) Colunas desnecessárias na cláusula SELECT. Algo como “SELECT *” por exemplo deve ser evitado e sim selecionar apenas as colunas que são necessárias para a query;
5) Sub-queries sem cláusula WHERE. Este é um caso muito comum, realizar sub-queries sem restrição. Deve-se evitar o uso deste tipo de query colocando restrições usando cláusula WHERE;
6) Queries que realizam operações com views. Muitas vezes o problema não está na query mas sim na query da view o que pode mascarar o problema.
Nos próximos posts vou acrescentando mais informações.
Abraços