Otimizar suas consultas de SQL

O SQL Report Builder permite consultar e iterar nessas consultas a qualquer momento. Isso é útil quando você precisa modificar uma consulta sem ter que esperar o término de um ciclo de atualização antes de perceber que uma coluna ou relatório criado precisa ser atualizado.

Antes da execução de uma consulta, Commerce Intelligence estima seu custo. O custo considera o tempo e o número de recursos necessários para executar uma consulta. Se esse custo for considerado muito alto ou se o número de linhas retornadas exceder os limites Commerce Intelligence, a consulta falhará. Para consultar sua Data Warehouse, o que garante que você esteja gravando as consultas mais simplificadas possíveis, a Adobe recomenda o seguinte.

Utilização de SELECIONAR ou Seleção de Todas as Colunas

Selecionar todas as colunas não possibilita uma consulta oportuna e facilmente executada. As consultas que usam SELECT * podem demorar um pouco para serem executadas, especialmente se a tabela tiver muitas colunas.

Por isso, a Adobe recomenda que você evite usar SELECT * sempre que possível e inclua apenas as colunas necessárias:

Em vez disso…
Experimente isto!

Uso de Junções Externas Completas

Junções externas selecionam a totalidade das duas tabelas sendo unidas, o que aumenta o custo computacional da consulta. Isso significa que sua consulta demora mais para ser executada e tem mais probabilidade de falha, pois pode levar mais tempo do que o limite de execução para retornar os resultados.

Em vez de usar esse tipo de junção, considere usar uma junção interna ou esquerda. As junções internas retornam resultados somente quando há uma correspondência de colunas entre tabelas (por exemplo, order_id existe em uma tabela customers e orders típicas). As junções à esquerda retornam todos os resultados da tabela à esquerda (primeira) juntamente com os resultados correspondentes na tabela à direita (segunda).

Veja como você pode reescrever uma consulta FULL OUTER JOIN:

Em vez disso…
Experimente isto!

Essas consultas são idênticas em todos os aspectos, exceto pelo tipo de JOIN que usam.

Uso de Várias Associações

Embora você possa incluir várias associações em sua consulta, lembre-se de que isso pode aumentar o custo da consulta. Para evitar atingir o limite de custo, a Adobe recomenda evitar várias associações sempre que possível.

Utilização de filtros

Use filtros sempre que possível. As cláusulas WHERE e HAVING filtram seus resultados e fornecem apenas os dados que você realmente deseja.

Uso de Filtros em Cláusulas JOIN

Se estiver usando um filtro ao executar uma associação, certifique-se de aplicá-lo a ambas as tabelas na associação. Mesmo que seja redundante, isso reduz o custo computacional do query e reduz o tempo de execução.

Em vez disso…
Experimente isto!

Uso de operadores

Ao gravar consultas, considere usar os operadores "mais baratos" possíveis. Cada consulta tem um custo computacional, que é determinado pelas funções, operadores e filtros que compõem a consulta. Alguns operadores exigem menos esforço computacional, o que os torna mais baratos do que outros operadores.

Os operadores de comparação (>, <, = e assim por diante) são os mais baratos, seguidos por LIKE. SEMELHANTE AOS operadores POSIX, que são os operadores mais caros.

Uso de EXISTS versus IN

Usar EXISTS versus IN depende do tipo de resultados que você está tentando retornar. Se você estiver interessado apenas em um único valor, use a cláusula EXISTS em vez de IN. IN é usado com listas de valores separados por vírgula, o que aumenta o custo computacional da consulta.

Quando as consultas IN são executadas, o sistema deve primeiro processar a subconsulta (a instrução IN) e depois a consulta inteira com base na relação especificada na instrução IN. EXISTS é muito mais eficiente porque a consulta não precisa ser executada várias vezes - um valor verdadeiro/falso é retornado ao verificar a relação especificada na consulta.

Simplificando: o sistema não precisa processar tanto ao usar o EXISTS.

Em vez disso…
Experimente isto!

Usando ORDER BY

ORDER BY é uma função cara no SQL e pode aumentar significativamente o custo de uma consulta. Se você receber uma mensagem de erro dizendo que o custo EXPLICAR da sua consulta é muito alto, tente eliminar qualquer ORDER BYs da sua consulta, a menos que seja necessário.

Isso não quer dizer que ORDER BY não possa ser usado; apenas que ele só deve ser usado quando necessário.

Usando GROUP BY e ORDER BY

Pode haver algumas situações em que essa abordagem não esteja em conformidade com o que você está tentando fazer. A regra geral é que, se você estiver usando um GROUP BY e ORDER BY, você deve colocar as colunas em ambas as cláusulas na mesma ordem. Por exemplo:

Em vez disso…
Experimente isto!

Encapsulamento

A melhor maneira de aprender a escrever SQL - e fazê-lo com eficiência - é por meio de tentativa e erro. Para descobrir o que funciona melhor para você, tente recriar alguns relatórios usando apenas o editor SQL.

recommendation-more-help
e1f8a7e8-8cc7-4c99-9697-b1daa1d66dbc