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? 절차?
필요한 경우가 아니라면 최적화 할 사람은 아니지만 ... 실제로 "나쁜"일을하는 경우 효과를 최소화하거나 적용 가능한 경우 변경하고 싶습니다.