отношения между людьми без внешнего ключа

Это известная «функция» SQL Server. Никогда не предполагайте, что предложение WHERE выполняется перед предложением SELECT.

См.: SQL Server не должен поднимать нелогичные ошибки

. На самом деле есть веские причины для этого иногда. Рассмотрим объединение двух таблиц, причем A будет намного меньше B.

select CAST(A.col1 as int), A.col2, B.col3
from A join B ...
where ... isnumeric(A.col1) = 1

Если вы проверите план запроса, сгенерированный, правильно или неправильно, SQL-сервер будет передавать данные из A в качестве ведущих строк для объединения против B. При этом он знает, что ему нужно только тянуть col2 и function on col1. Это может привести к col1 только для запуска функции позже или для чего-то столь же тривиального, как CAST, SQL Server может также преобразовать данные во время потокового процесса.

Одно можно сказать наверняка, эта стратегия сделать SQL Server немного быстрее в некоторых запросах. Но в чисто логической перспективе я бы назвал это ошибкой.

0
задан O. Shekriladze 26 February 2019 в 14:10
поделиться

1 ответ

вы можете использовать вложенную нетерпеливую нагрузку следующим образом:

Order::with('driver.trackings')

это будет загрузка драйвера, связанная с заказом и отслеживания, связанные с драйвером

0
ответ дан atoui ahmed 26 February 2019 в 14:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: