Executando verificação de segurança...
1

9 Maneiras para Melhorar Perfomance de Consultas SQL

  1. Certifique-se de especificar o índice correto para a consulta.

  2. Verifique se os tipos de dados usados na consulta são compatíveis com os usados na tabela.

  3. Utilize o operador LIKE ao invés do operador = para evitar que o banco de dados procure linha por linha.

  4. Ao invés de vários operadores OR, utilize o operador BETWEEN para reduzir o número de linhas que o banco de dados precisa varrer.

  5. Utilize a cláusula WHERE corretamente para filtrar os resultados da maneira mais eficiente possível.

  6. Quando possível, utilize subconsultas para reduzir o número de linhas que o banco de dados precisa varrer.

  7. Evite ORDER BY desnecessário para melhorar o desempenho da consulta.

  8. Utilize as funções do banco de dados corretamente para obter os resultados desejados.

  9. Utilize o modo de execução explícito ao invés do modo de execução implícito para melhorar o desempenho da consulta.

Carregando publicação patrocinada...
1

Sobre:

Utilize o operador LIKE ao invés do operador = para evitar que o banco de dados procure linha por linha.

Acredito que isso está errado. Em ambos os operadores o banco de dados vai procurar linha por linha. Além disso, é mais rápido verificar a igualdade do que buscar por um padrão em uma string, que é o que operador LIKE faz.

Para comprovar, basta executar as duas queries seguintes no PostgreSQL:


explain 
select item
from tabela
	where item like 'xxx';
        
explain 
select item
from tabela
	where item = 'xxx'; 

O comando pede para o banco explicar o que será feito para buscar o dado, em ambos os casos ele retorna algo como "Seq Scan on ...", isto é, irá fazer uma busca sequencial em todos os items.

OBS: Caso a coluna buscada contenha indíces o resultado é um pouco diferente.

Sobre o comando explain.

1

Usar LIKE é mais rápido do que usar = em SQL porque o LIKE usa um padrão de correspondência ao invés de um valor exato, o que significa que o SQL não precisa de procurar exatamente o que está sendo procurado. Por exemplo, se você estiver procurando por todas as linhas que contêm a palavra "teste", você pode usar LIKE para procurar por todas as linhas que contêm a palavra "teste", em vez de usar o = para procurar por cada linha com exatamente "teste". Isso significa que o SQL precisa percorrer menos linhas para encontrar o que está procurando, o que o torna mais rápido.

1

Agora entendi o que quis dizer. Nesse exemplo que você deu, faz sentido sim usar like, concordo. Mas esse é um caso, há varios que não faz sentido usar like. Ou seja, é mais rápido em certos casos, nao dá pra sempre usar like, como sugeriu. É necessário analisar o problema.

E sobre percorrer mais ou menos linhas, ambos vão varrer todas as linhas do banco, não há diferença, como mostrei usando o comando explain. Isso ocorre porque o banco está procurando todos as linhas que satisfazem o where, não somente uma linha, então precisa procurar em todos as linhas do banco.

Entende? Obrigado por explicar!

1
1
1
1
1

Essa primeira dica sobre índices devo dizer por experiência própria que é ótima!
Principalmente em bancos extremamente grandes, saber quais colunas corretas para realizar indexação causa uma diferença de performance fora do real, parece um recurso bobo mas é extremamente útil