Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
261
Assunto : SQL Server
Titulo: Semelhanças entre OR e UNION

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



O SQL Server tem a capacidade de utilizar mais de um índice por query quando necessário, o que pode otimizar bastante uma query, fugindo do famoso table scan (clustered index scan). Porém em alguns casos esta otimização pode ficar muito semelhante ou até pior que a realização de um union.

Se utilizamos um select com um or no mesmo campo

select * from orders where customerid='alfki' or customerid='anatr'

Então apenas um único índice será utilizado e o SQL Server pode fazer facilmente o index seek através dele. Porém se utilizamos um OR com dois campos


select * from orders where customerid='alfki' or orderdate>'05/05/1998'

Então o SQL Server decide-se por usar 2 índices e depois fazer o que ele chama de hash do resultado (juntar o resultado).

Porém o mesmo resultado poderia ser obtido da seguinte forma :


select * from orders where customerid='alfki'
union all
select * from orders where orderdate>'05/05/1998'

Veja outro exemplo :


select * from [order details] where orderid=10248 or productid=9

e

select * from [order details] where orderid=10248
union all
select * from [order details] where productid=9

Em ambos todos estes exemplos, testados no banco northwind, a query utilizando UNION tende a ter um elapsed time e logical reads inferior a query utilizando OR (ligue as opções set statsio e set statstime). A diferença foi mínima para as pequenas tabelas do northwind, mas pode ser recomendável fazer testes caso precise utilizar este tipo de query com OR em grandes tabelas.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 1/31/2017 12:11:00 PM
nome: vJDbUQmabkbsBjrgcXv
email: derby451@hotmail.com
comentário:
GD7O8M http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/29/2017 9:47:00 AM
nome: TvcBwosZSCzqBeUGHNw
email: derby451@hotmail.com
comentário:
6QPf2L http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/29/2017 9:46:00 AM
nome: pAREBbxONnecOqJwc
email: jogcbfn@hotmail.com
comentário:
nylPRd http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/3/2017 4:32:00 AM
nome: RYIHVwohdIkj
email: jfvynms4281rt@hotmail.com
comentário:
jvdtAh http://www.FyLitCl7Pf7ojQdDUOLQOuaxTXbj5iNG.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br