Executando verificação de segurança...
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.

Carregando publicação patrocinada...
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