Prioridad de los operadores lógicos

Cuando en una instrucción se usa más de un operador lógico, primero se evalúa NOT, luego AND y, finalmente, OR. Los operadores aritméticos y bit a bit se tratan antes que los operadores lógicos.

En el siguiente ejemplo, la condición de color pertenece al modelo de producto 21 y no al modelo de producto 20 porque AND tiene prioridad sobre OR.

USE AdventureWorks2008R2;
GO
SELECT ProductID, ProductModelID
FROM AdventureWorks2008R2.Production.Product
WHERE ProductModelID = 20 OR ProductModelID = 21
  AND Color = 'Red'

Puede cambiar el significado de la consulta si agrega paréntesis para provocar que OR se evalúe primero. La siguiente consulta busca solamente los productos en los modelos 20 y 21 que sean rojos.

SELECT ProductID, ProductModelID
FROM AdventureWorks2008R2.Production.Product
WHERE (ProductModelID = 20 OR ProductModelID = 21)
  AND Color = 'Red'

El uso de paréntesis, incluso cuando no se necesitan, puede mejorar la comprensión de las consultas y reducir las posibilidades de cometer un error debido a la prioridad de los operadores. No hay ninguna reducción significativa del rendimiento que sea achacable al uso de paréntesis. El siguiente ejemplo se lee mejor que el ejemplo original, aunque ambos son sintácticamente iguales.

SELECT ProductID, ProductModelID
FROM AdventureWorks2008R2.Production.Product
WHERE ProductModelID = 20 OR (ProductModelID = 21
  AND Color = 'Red')