Tempo aproximado para leitura: 00:04:24 min
Dúvida
Como localizar trechos da consulta que podem causar lentidão?
Este documento possui o objetivo de demonstrar algumas condições que prejudicam na performance de consulta SQL (Structured Query Language, ou Linguagem de Consulta Estruturada).
Ambiente
Cross Segmentos - TOTVS Backoffice (Linha RM) - Todas as versões
Solução
Ao desenvolver uma consulta SQL, é de extrema importância evitar o uso de condições que possam impactar na performance da query, obtendo assim, menor tempo de execução e custo de processamento no servidor. Consultas SQL que não são executadas nos primeiros segundos, devem ser analisadas considerando condições performáticas.
Abaixo vamos listar algumas condições que possam impactar na performance da query, evite o uso:
- Evitar o uso do DISTINCT quando possível utilize EXISTS
- Evitar o uso de operadores LIKE, principalmente em campos com alto número de registros e string. Caso utilizar, evite o uso do % no início da string.
- Evitar o uso de * na query, retornando todas as informações da tabela, utilize somente os campos necessários para sua consulta.
- Evitar utilizar funções em colunas no SELECT.
- Evitar utilizar funções nas colunas da clausula JOIN.
- Evitar retornar campos de imagens no SELECT.
- Dê preferência aos indexados da base padrão, para condicionar os resultados do seu SELECT.
- Utilize a condição (NOLOCK) para o SGDB SQL Server, a fim de evitar uma alocação do objeto consultado durante execução da query.
Importante:
A análise de query é de responsabilidade do cliente, este documento apenas apresenta dicas de para obter melhor performance na execução de consultas.
Informações Adicionais:
Para obter mais informações sobre análise de query, cada SGDB (Sistema de Gerenciamento de Banco de Dados) possui recursos disponíveis que auxiliam na análise do plano de execução da consulta, segue abaixo os sites de referência:
ORACLE: https://docs.oracle.com/database/121/TGSQL/tgsql_sqltune.htm#TGSQL540
SQL SERVER: https://docs.microsoft.com/pt-br/sql/relational-databases/performance/execution-plans?view=sql-server-ver15
0 Comentários