Cuidado com o OR
Faz diferença na sua consulta
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
CREATE CLUSTERED INDEX IX_ProdutoId ON #Produto(ID)
GO
CREATE INDEX IX_ProdutoNome ON #Produto(NomeProduto)
GO
Agora vamos fazer duas consultas, uma utilizando o OR e outra utilizando o UNION ALL.
SELECT * FROM #Produto
WHERE ID=10 OR NomeProduto Like '38%'
SELECT * FROM #Produto
WHERE ID = 10
UNION ALL
SELECT * FROM #Produto
WHERE NomeProduto Like '38%'
Ao utilizar o OR, percebemos que ele utiliza um Scan(mais lento) .
Não esqueça de apagar a tabela temporária.
DROP TABLE #Produto
Related articles
Short: SQL Update using begin try and begin transaction
Commit and Rollback command
Getting the last 120 months of data from my database
how to do it in SQL language?
How to create a variable to use the IN clause SELECT query SQL?
Database code part
Ozimar Henrique