Devo usar o Like ou starting With ?
Na tela de vendas, o cliente digita as iniciais do produto, por exemplo BALA,
ai devo abrir a tela de consulta com todos os produtos com BALA
Estou usando da seguinte forma na clausula Where
Where P.BUSC_PROD LIKE ´BALA¬´
So que tabelas com muitos produtos demora um pouco... Eu ja criei o indice sobre o campo BUSC_PROD
Vi na internet o comando abaixo
Where P.BUSC_PROD starting with ´BALA´
Qual a melhor maneira? Qual vai trazer os resultados mais rapidamente?
ai devo abrir a tela de consulta com todos os produtos com BALA
Estou usando da seguinte forma na clausula Where
Where P.BUSC_PROD LIKE ´BALA¬´
So que tabelas com muitos produtos demora um pouco... Eu ja criei o indice sobre o campo BUSC_PROD
Vi na internet o comando abaixo
Where P.BUSC_PROD starting with ´BALA´
Qual a melhor maneira? Qual vai trazer os resultados mais rapidamente?
Sistemp
Curtidas 0
Respostas
Joaoshi
02/04/2005
Colega,
Tenho a impressão que se o campo a ser pesquisado tem um indice, as duas formas estão corretas (starting with ´BALA´ ou like ´BALA¬).
Faça um teste com IbExpert (Supondo ser FB ou Interbase).
Espero ter ajudado.
Tenho a impressão que se o campo a ser pesquisado tem um indice, as duas formas estão corretas (starting with ´BALA´ ou like ´BALA¬).
Faça um teste com IbExpert (Supondo ser FB ou Interbase).
Espero ter ajudado.
GOSTEI 0
Emerson Nascimento
02/04/2005
se sua pesquisa for sempre pelo início, as duas maneiras irão funcionar da mesma forma.
o diferencial se dá se sua pesquisa puder ser feita por qualquer posição do conteúdo.
// para registros [i:3cc6417815]iniciados[/i:3cc6417815] com o conteúdo desejado
select *
from tabela
where campo like ´CONTEUDO¬´
ou
where campo starting with ´CONTEUDO´
// para registros que [i:3cc6417815]contenham[/i:3cc6417815] o conteúdo desejado
select *
from tabela
where campo like ´¬CONTEUDO¬´
// para registros que [i:3cc6417815]terminem[/i:3cc6417815] com o conteúdo desejado
select *
from tabela
where campo like ´¬CONTEUDO´
note que o like funciona para todos os casos, mudando apenas a posição do curinga (¬).
o diferencial se dá se sua pesquisa puder ser feita por qualquer posição do conteúdo.
// para registros [i:3cc6417815]iniciados[/i:3cc6417815] com o conteúdo desejado
select *
from tabela
where campo like ´CONTEUDO¬´
ou
where campo starting with ´CONTEUDO´
// para registros que [i:3cc6417815]contenham[/i:3cc6417815] o conteúdo desejado
select *
from tabela
where campo like ´¬CONTEUDO¬´
// para registros que [i:3cc6417815]terminem[/i:3cc6417815] com o conteúdo desejado
select *
from tabela
where campo like ´¬CONTEUDO´
note que o like funciona para todos os casos, mudando apenas a posição do curinga (¬).
GOSTEI 0
Afarias
02/04/2005
Existe uma grande --mas sutil-- diferença entre LIKE e STARTING WITH
Imagine q vc está fazendo uma consulta parametrizada:
select * from tabela
where campo like :param
bom, o otimizador do Interbase (ou FB) não tem como saber se o parâmetro vai receber ´A´, ´A¬´, ´¬A´ ou ´¬A¬´
sendo assim, consultas parametrizadas com LIKE *nunca* usam índice. Enquanto o STARTING [WITH] garante q a consulta *sempre* utilize um índice.
T+
Imagine q vc está fazendo uma consulta parametrizada:
select * from tabela
where campo like :param
bom, o otimizador do Interbase (ou FB) não tem como saber se o parâmetro vai receber ´A´, ´A¬´, ´¬A´ ou ´¬A¬´
sendo assim, consultas parametrizadas com LIKE *nunca* usam índice. Enquanto o STARTING [WITH] garante q a consulta *sempre* utilize um índice.
T+
GOSTEI 0
Rafael_iga
02/04/2005
ta...
mas qual eh a melhor ?
mas qual eh a melhor ?
GOSTEI 0
Beppe
02/04/2005
ta...
mas qual eh a melhor ?
:shock:
Well, STARTING WITH, sempre que puder ser usada.
GOSTEI 0
Afarias
02/04/2005
:roll:
GOSTEI 0
Joaoshi
02/04/2005
Obrigado pela ´sutil´ aula colegas. :wink:
GOSTEI 0