Mengingat pertanyaan ini pada reddit, saya membersihkan kueri untuk menunjukkan di mana masalahnya berada dalam kueri. Saya menggunakan koma terlebih dahulu dan WHERE 1=1
untuk membuat memodifikasi kueri lebih mudah, jadi pertanyaan saya umumnya berakhir seperti ini:
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
Seseorang pada dasarnya mengatakan bahwa 1 = 1 umumnya malas dan buruk untuk kinerja .
Mengingat bahwa saya tidak ingin "mengoptimalkan secara prematur" - saya ingin mengikuti praktik yang baik. Saya telah melihat rencana permintaan sebelumnya, tetapi umumnya hanya untuk mengetahui indeks apa yang dapat saya tambahkan (atau sesuaikan) untuk membuat kueri saya berjalan lebih cepat.
Pertanyaannya kemudian ... apakah Where 1=1
hal-hal buruk terjadi? Dan jika demikian, bagaimana saya bisa tahu?
Sunting Minor: Saya selalu 'berasumsi' juga yang 1=1
akan dioptimalkan, atau paling tidak dapat diabaikan. Tidak ada salahnya untuk menanyakan mantra, seperti "Goto's is Evil" atau "Premature Optimization ..." atau fakta yang diasumsikan lainnya. Tidak yakin apakah 1=1 AND
akan memengaruhi rencana kueri secara realistis atau tidak. Bagaimana dengan di subqueries? CTE? Prosedur?
Saya bukan orang yang dioptimalkan, kecuali diperlukan ... tetapi jika saya melakukan sesuatu yang sebenarnya "buruk", saya ingin meminimalkan efek atau mengubah di mana berlaku.