Os desenvolvedores não prestam tanta atenção quanto deveriam ao ajuste de consulta SQL ao reduzir os tempos de resposta para aplicativos web. Aqui estão algumas dicas de como aumentar o desempenho de consultas SQL.
Quando vejo otimizações de desempenho para reduzir os tempos de resposta para aplicativos Web, as alterações geralmente são feitas na camada do aplicativo ou verificando a existência do índice nas colunas da tabela do banco de dados.
Mesmo arquitetos e desenvolvedores especialistas tendem a esquecer que entender como os bancos de dados funcionam internamente e escrever consultas SQL melhores é muito importante para obter um melhor desempenho.
Aqui estão sete dicas simples que aumentarão o desempenho de suas consultas SQL.
1. Proprietário (dbo. ou outro schema)
Prefixe sempre os nomes dos objetos (por exemplo, nome da tabela, nome do procedimento armazenado, etc.) com seu nome de proprietário.
Pois se o nome do proprietário não for fornecido, o mecanismo do SQL Server tentará localizá-lo em todos os esquemas até que o objeto o encontre. Assim, o mecanismo do SQL Server não pesquisará a tabela fora de seu proprietário se o nome do proprietário for fornecido.
2. O Operador *
Não use o *
operador em suas SELECT
declarações. Em vez disso, use nomes de colunas.
Já que o SQL Server verifica todos os nomes de coluna e substitui o *
com todos os nomes de coluna da (s) tabela (s) na SELECT
instrução SQL. Assim, fornecer nomes de coluna evita essa pesquisa e substituição e melhora o desempenho.
3. Colunas NULL
Não use NOT IN
ao comparar com colunas NULL. Use NOT EXISTS
em vez disso.
Pois quando NOT IN
é usado na consulta (mesmo se a consulta não retornar linhas com valores nulos), o SQL Server verificará cada resultado para ver se é nulo ou não. Portanto, usando NOT EXISTS
não fará a comparação com nulos.
4. Tabela de Variáveis e Joins
Não use variáveis de tabela em joins. Use tabelas temporárias, CTEs (Common Table Expressions) ou tabelas derivadas em junções.
Motivo: Embora as variáveis de tabela sejam muito rápidas e eficientes em muitas situações, o mecanismo do SQL Server a vê como uma única linha.
Sendo assim, eles executam mal quando usados em junções. CTEs e tabelas derivadas tem melhor desempenho com junções em comparação com variáveis de tabela.
5. Nomes das procedures
Não comece o nome das suas procedures com sp_
.
Já que, quando a procedure é nomeado sp_
ou SP_
, o SQL Server sempre verifica no banco de dados do sistema/mestre, mesmo se o nome do proprietário/esquema é fornecido.
Fornecer um nome sem SP_
a um procedimento armazenado evita essa verificação desnecessária no banco de dados do sistema/mestre no SQL Server.
6. Use SET NOCOUNT ON
Use SET NOCOUNT ON
com operações DML.
Motivo: Ao executar operações DML (ou seja INSERT
, DELETE
, SELECT
, e UPDATE
), SQL Server sempre retorna o número de linhas afetadas.
Em consultas complexas com muitas associações, isso se torna um grande problema de desempenho. Usar SET NOCOUNT ON
irá melhorar o desempenho porque não contará o número de linhas afetadas.
7. Evite um usar GROUP BY, ORDER BY e DISTINCT
Evite usar GROUP BY
, ORDER BY
e DISTINCT
tanto quanto possível.
Pois ao usar GROUP BY
, ORDER BY
ou DISTINCT
, o mecanismo do SQL Server cria uma tabela de trabalho e coloca os dados na tabela de trabalho.
Sendo assim, ele organiza esses dados na tabela de trabalho, conforme solicitado pela consulta, e retorna o resultado final.
Use GROUP BY
, ORDER BY
ou DISTINCT
na sua consulta somente quando for absolutamente necessário.
Conclusão
Aplicativos complexos e grandes geralmente criam requisitos complexos. Isso nos leva a escrever consultas SQL complexas. Essas simples alterações nas consultas do SQL Server farão uma enorme diferença nos tempos de resposta.
Por fim, obrigado por ler o meu artigo. Espero que tenha sido útil!
Wesley Mota
Latest posts by Wesley Mota (see all)
- The Ultimate Guide to Gry Online Ruletka - novembro 14, 2024