Dada esta pregunta en reddit, limpié la consulta para señalar dónde estaba el problema en la consulta. Utilizo comas primero y WHERE 1=1
para facilitar la modificación de consultas, por lo que mis consultas generalmente terminan así:
SELECT
C.CompanyName
,O.ShippedDate
,OD.UnitPrice
,P.ProductName
FROM
Customers as C
INNER JOIN Orders as O ON C.CustomerID = O.CustomerID
INNER JOIN [Order Details] as OD ON O.OrderID = OD.OrderID
INNER JOIN Products as P ON P.ProductID = OD.ProductID
Where 1=1
-- AND O.ShippedDate Between '4/1/2008' And '4/30/2008'
And P.productname = 'TOFU'
Order By C.CompanyName
Básicamente, alguien dijo que 1 = 1 es generalmente flojo y malo para el rendimiento .
Dado que no quiero "optimizar prematuramente", sí quiero seguir buenas prácticas. He visto los planes de consulta antes, pero generalmente solo para averiguar qué índices puedo agregar (o ajustar) para que mis consultas se ejecuten más rápido.
La pregunta entonces realmente ... ¿hace Where 1=1
que sucedan cosas malas? Y si es así, ¿cómo puedo saberlo?
Edición menor: siempre he 'asumido' que eso 1=1
se optimizaría o, en el peor de los casos, sería insignificante. Nunca está de más cuestionar un mantra, como "Goto's are Evil" u "Optimización prematura ..." u otros hechos supuestos. No estaba seguro si 1=1 AND
afectaría de manera realista los planes de consulta o no. ¿Qué pasa en subconsultas? CTE? Procedimientos?
No soy uno para optimizar, a menos que sea necesario ... pero si estoy haciendo algo que es realmente "malo", me gustaría minimizar los efectos o cambiarlos cuando corresponda.