เมื่อให้คำถามนี้กับ reddit ฉันได้ล้างคิวรีเพื่อชี้ให้เห็นว่าปัญหาอยู่ที่ไหนในเคียวรี ฉันใช้เครื่องหมายจุลภาคก่อนและWHERE 1=1
ทำให้การสืบค้นแก้ไขง่ายขึ้นดังนั้นโดยทั่วไปแล้วข้อความค้นหาของฉันจะเป็นดังนี้:
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
ใครบางคนโดยทั่วไปกล่าวว่า1 = 1 โดยทั่วไปคือขี้เกียจและไม่ดีสำหรับการทำงาน
เนื่องจากฉันไม่ต้องการ "เพิ่มประสิทธิภาพก่อนกำหนด" - ฉันต้องการปฏิบัติตามแนวทางปฏิบัติที่ดี ฉันเคยดูที่แผนคิวรีมาก่อน แต่โดยทั่วไปแล้วจะพบว่าฉันสามารถเพิ่มดัชนี (หรือปรับ) ดัชนีใดเพื่อให้คิวรีทำงานได้เร็วขึ้น
คำถามนั้นจริง ๆ ... Where 1=1
ทำให้สิ่งเลวร้ายเกิดขึ้นหรือไม่ และถ้าเป็นเช่นนั้นฉันจะบอกได้อย่างไร?
การแก้ไขเล็กน้อย: ฉันมักจะ 'สันนิษฐาน' เช่นกันว่า1=1
จะได้รับการปรับปรุงให้ดีที่สุดหรืออย่างน้อยที่สุดก็เล็กน้อย อย่าเจ็บคำถามมนต์เช่น "Goto's are Evil" หรือ "Premature Optimization ... " หรือข้อเท็จจริงอื่น ๆ ไม่แน่ใจว่า1=1 AND
จะมีผลกับแผนคิวรีจริงหรือไม่ สิ่งที่เกี่ยวกับในแบบสอบถามย่อย? CTE หรือไม่? ขั้นตอน?
ฉันไม่ใช่คนที่จะปรับให้เหมาะสมเว้นแต่จะจำเป็น ... แต่ถ้าฉันทำสิ่งที่ "เลวร้าย" จริง ๆ แล้วฉันต้องการลดผลกระทบหรือเปลี่ยนแปลงตามความเหมาะสม