Есть один ответ на этот вопрос, который затрагивает это... но я чувствую, что он заслуживает своего собственного вопроса.
Этот вопрос, который отмечен как дубликат для первого, но на самом деле это не то, о чем я хочу спросить.. и как он говорит в бит
Этот вопрос задан раньше и уже имеет ответ. Если эти ответы не полностью отражают ваш вопрос, задайте новый вопрос.
Итак, я задаю новый вопрос.
Я могу написать запрос как:
SELECT *
FROM customer_order co
JOIN customer c
ON c.id = co.customer_id
AND c.type = 'special'
JOIN order o
ON o.id = co.order_id
AND o.status = 'dispatched'
ИЛИ
SELECT *
FROM customer_order co
JOIN customer c
ON c.id = co.customer_id
JOIN order o
ON o.id = co.order_id
WHERE c.type = 'special'
AND o.status = 'dispatched'
Я абсолютно предпочитаю первый способ, особенно в более сложных запросах, поскольку он группирует условия с таблицами, на которых они работают, что упрощает чтение и определение соответствующих составных индексов. Это также означает, что если я хочу перейти на LEFT JOIN
(или, может быть, RIGHT JOIN
, я действительно не использую RIGHT JOIN
), все условия находятся в нужном месте.
Кажется, есть предпочтение, однако, в сообществе по второму пути.
Кто-нибудь знает, обосновано ли это предпочтение, возможно, в какой-то проблеме с производительностью или в какой-то проблеме с читабельностью, с которой мне еще предстоит споткнуться? Или я могу продолжать быть повстанцем с радостью?