Angesichts dieser Frage zu reddit habe ich die Abfrage bereinigt, um darauf hinzuweisen, wo sich das Problem in der Abfrage befand. Ich verwende zuerst ein Komma und WHERE 1=1
um das Ändern von Abfragen zu vereinfachen. Daher enden meine Abfragen im Allgemeinen so:
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
Jemand sagte im Grunde, dass 1 = 1 im Allgemeinen faul und schlecht für die Leistung ist .
Da ich nicht "vorzeitig optimieren" möchte, möchte ich gute Praktiken befolgen. Ich habe mir zuvor die Abfragepläne angesehen, aber im Allgemeinen nur, um herauszufinden, welche Indizes ich hinzufügen (oder anpassen) kann, damit meine Abfragen schneller ausgeführt werden.
Die Frage ist dann wirklich, ob ... Where 1=1
schlimme Dinge passieren? Und wenn ja, wie kann ich das beurteilen?
Minor Edit: Ich habe auch immer "angenommen", dass 1=1
das optimiert oder im schlimmsten Fall vernachlässigbar wäre. Es tut niemals weh, ein Mantra wie "Goto's are Evil" oder "Premature Optimization ..." oder andere vermutete Fakten in Frage zu stellen. War nicht sicher, ob sich 1=1 AND
dies realistisch auf die Abfragepläne auswirken würde oder nicht. Was ist mit Unterabfragen? CTE? Prozeduren?
Ich bin nicht derjenige, der optimiert, es sei denn, er wird benötigt ... aber wenn ich etwas "Schlechtes" mache, möchte ich die Effekte minimieren oder gegebenenfalls ändern.