З огляду на це запитання в 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
було б оптимізовано, або, в гіршому випадку, мізерно. Ніколи не завадить ставити під сумнів мантру, наприклад "Гото - це зло" чи "Передчасна оптимізація ..." чи інші припущені факти. Не був впевнений, чи 1=1 AND
реально це вплине на плани запитів чи ні. А як щодо підзапитів? CTE? Процедури?
Я не хочу оптимізувати, якщо це не потрібно ... але якщо я роблю щось, що насправді є "поганим", я б хотів мінімізувати ефекти або змінити, де це можливо.