Здравствуйте, Danchik, Вы писали:
_>>Для данного кода MockDb (это такой провайдер, который тупо печатает стандартизированный sql и всё) выдаёт следующее (для других СУБД могут быть нюансы, хотя наверное не с этим примером):
_>>_>>Running select call with
_>>SELECT Orders.user FROM Orders INNER JOIN SELECT Users.id,Users.name FROM Users WHERE (Users.total>10) AS rich_users ON (Orders.user=rich_users.id) WHERE (Orders.year>100)
_>>
D>Из этого простого примера видно что строить, а тем более оптимизировать SQL оно не умеет.
Оптимизировать никто и не обещал. Это инструмент для тех, кто знаком с sql. )))
А что по твоему не так с построением? ))) Ты видишь какое-то несоответствие заданной конструкции и полученной sql строки? )
D>Поставить еще одно Where вокруг всего вот этого выражения — и думаю появится новый сабселект.
А вот такого естественно не будет, т.к. дополнительный select появится только в случае прямого указания на это. Т.е. данный инструмент делает в точности то, что указывает программист. Не больше и не меньше. )
D>Можна надеяться на оптимизатор SQL Server, но черт, он то как оказывается не резиновый.
Скорее уж PostgreSQL или Oracle в особых случаях. )))