VS自动优化SQL语句逻辑与效率的疑问

    技术2022-05-11  47

    用VS2005时发现一个问题,生成数据集时,VS会帮你自动优化语句,一般都不怀疑微软的水平,不过这次优化之后实在是看不懂了,怀疑优化错了,于是在查询分析器里试了一下,结果倒是对的,可是执行计划里却显示优化后的效率低一些,奇怪了

    下面代码里前一行是我写的,后一行是VS优化出来的(使用了SQL Server自带的Northwind数据库):

    declare   @shipName   varchar declare   @ShipCity   varchar set   @shipName = '' set   @ShipCity = '' SELECT  dbo.Orders.OrderID, dbo.Orders.OrderDate, dbo.Employees.FirstName,       dbo.Customers.CompanyName FROM  dbo.Customers  INNER   JOIN       dbo.Orders  ON  dbo.Customers.CustomerID  =  dbo.Orders.CustomerID  INNER   JOIN       dbo.Employees  ON  dbo.Orders.EmployeeID  =  dbo.Employees.EmployeeID WHERE  (shipName  =   @shipName   OR        @shipName   =   '' AND  (shipcity  =   @ShipCity   OR        @ShipCity   =   '' AND  ShipVia  =   2 SELECT  Orders.OrderID, Orders.OrderDate, Employees.FirstName,       Customers.CompanyName FROM  Customers  INNER   JOIN       Orders  ON  Customers.CustomerID  =  Orders.CustomerID  INNER   JOIN       Employees  ON  Orders.EmployeeID  =  Employees.EmployeeID WHERE  (Orders.ShipName  =   @shipName   OR   @shipName   =   '' AND        (Orders.ShipCity  =   @ShipCity AND  (Orders.ShipVia  =   2 OR (Orders.ShipName  =   @shipName   OR   @shipName   =   '' AND        (Orders.ShipVia  =   2 AND  ( @ShipCity   =   '' )

     执行计划显示查询成本分别是:49.49%和50.51%

    另外就是看不懂优化后的where后面是什么意思,郁闷ing~~~~~记下这笔,有时间研究下


    最新回复(0)