Nota de Migração: Este artigo foi migrado para o Portal Wiki em Português. O conteúdo será atualizado aqui http://social.technet.microsoft.com/wiki/pt-br/contents/articles/12567.dica-cuidado-com-or.aspx. Sempre que possível substituir condições com OR por UNION ALL
Vamos criar um ambiente para testar esta dica:
CREATE
TABLE
#Produto (
ID
Int
Identity(1,1),
NomeProduto
varchar
(500)
)
GO
INSERT
INTO
#Produto
VALUES
(NEWID())
GO 1000
CLUSTERED
INDEX
IX_ProdutoId
ON
#Produto(ID)
IX_ProdutoNome
#Produto(NomeProduto)
Agora vamos fazer duas consultas, uma utilizando o OR e outra utilizando o UNION ALL.
SELECT
*
FROM
WHERE
ID=10
OR
Like
'38%'
ID = 10
UNION
ALL