› Fóruns › SQL e PL/SQL › Otimização SQL › Otimização SQL
[quote=”isacjop”:2e2no8rf][quote=”burga”:2e2no8rf]Só chutando o pau da barraca, com certeza é necessário ver o que o pessoal comentou, mas um bom começo é tentar acabar com esses ORs da vida:
[/quote]
Utilizei sua a consulta original usando o COALESCE e obtive um ganho de 20% no custo da consulta. Realmente não sabia que o “OR” desabilitava os índices.[/quote]
Ainda assim é bom checar o plano de execução, o trace, estatísticas, cardinalidades e tudo mais que o pessoal postou aí pra tentar obter o melhor desempenho possível.
O operador OR não desabilita os índices, isso depende muito de como o seu banco está estruturado, então não tome isso como verdade absoluta. Se não fosse um índice composto e sim um pra cada coluna, poderia ser que eles fossem utilizados, é claro que com um “tratamentozinho” a mais pra indexar também os valores nulos. O que eu falei do OR é só pro seu caso, bem específico. Mas ainda acho que está longe de ser a melhor opção. Como eu disse é só o começo, pro resto seria necessário fazer uma análise mais profunda.
Isso também porque eu estou considerando que a data de nascimento da pessoa sempre vai estar preenchida, se existir valores nulos na coluna a lógica da minha consulta como está agora não vai ser a mesma da sua consulta original… Pra isso, teriam que ser feitas mais alterações.
[quote=”leandrolbs”:2e2no8rf]o @Burga sempre matando de locaute…hehehe[/quote]
É nada, vocês todos tem a razão aqui, eu é que eu tenho o mal costume de arriscar na minha bola de cristal com um pouco de lógica. Algumas vezes dá certo mas outras vezes acabo falando besteira… 😳