[firebase-br] UNION vs OR

Kelver Merlotti kmerlotti em gmail.com
Qui Jan 21 18:09:57 -03 2010


> posso estar falando besteira (acho q é), mas o like usa indice?
sim, usa sim, desde que não inicie com %, como disse o amigo Eduardo.

> Se não houver índice nos campos NOME E APELIDO, o OR também é melhor, pois
> não haverá otimização mesmo e aí é melhor varrer só uma vez.
sim, a questão é considerando que haja um indice para cada campo.

Obviamente em tabelas pequenas a diferença é imperceptível, assim como
qualquer outro select, mas a questão (em meu caso) se aplica a um
sistema que lida com dezenas e dezenas de mil registros cadastrados.

A preocupação em si é: qual seria o mais custoso para o servidor? Ou
ainda, há  recomendações com relação ao uso de um ou de outro?.

Pelos testes que fiz, se o critério informado no Like não filtrar
bastante, o union sai perdendo, e feio. Porém, quando o critério
filtra o suficiente (por exemplo, informar mais de 5 letras para o
nome/apelido) o union executa em bem menos tempo e percorre bem menos
registros.

Mais alguma opinião?

Abraços!

Kelver Merlotti
Coordenador Editorial do Portal www.ActiveDelphi.com.br
Contato: kelver em activedelphi.com.br
Google: kmerlotti em gmail.com
Twitter: http://twitter.com/kmerlotti
Tem um segundo? Então, dá uma olhadinha nisso:
Um site de publicidades, de Portugal, está pagando em euros (quase 3x
mais que em reais) pra quem estiver disposto a:
 * Ler anúncios
 * Visitar sites
 * Clicar em banners
 * Navegar na NET
 * Ler e-mails
 * Convidar novos usuários
O pagamento pode ser feito de várias formas!
Registra lá. Não custa nada!!! ;-)
http://www.publipt.com/pages/index.php?refid=kmerlotti



2010/1/21 Eduardo Bahiense <eduardo em icontroller.com.br>:
> No caso dele, sim, pois não vem precedido de '%'.
>
> Se fosse LIKE '%KEL[%]' não usaria, e isso ajuda a responder a pergunta.
>
> Se houver a possibilidade de LIKE '%[...]', então nada vai ajudar e o OR
> deverá ser a opção de escolha, pois varrerá a tabela uma única vez, enquanto
> o UNION a varreria 2 vezes.
> Se não houver índice nos campos NOME E APELIDO, o OR também é melhor, pois
> não haverá otimização mesmo e aí é melhor varrer só uma vez.
> Se houver índice em pelo menos 1 dos campos, dependendo da quantidade de
> registros na tabela, pode-se perceber um ganho significativo. Se o volume de
> registros for pouco, para a percepção humana, não haverá diferença, sendo
> bom fazer a comparação com base em alguma ferramenta que indique a
> quantidade de leituras em cada forma para não escolher a forma errada
> porque, com poucos dados, para o olho humano, é tudo igual.
>
> Eduardo
>
> samuel ferreira escreveu:
>>
>> ola
>>
>> posso estar falando besteira (acho q é), mas o like usa indice?
>>
>> samuel
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>




Mais detalhes sobre a lista de discussão lista