在SQL Server Management Studio(SSMS)中查询
USE Northwind; SELECT C.CustomerID, COUNT(O.OrderID) AS NumOrders FROM dbo.Customers AS C LEFT OUTER JOIN dbo.Orders AS O ON C.CustomerID = O.CustomerID WHERE C.City = 'London' GROUP BY C.CustomerID HAVING COUNT(O.OrderID) > 5 ORDER BY NumOrders;
点击包含实际执行计划(Include Actual Exevution Plan),下图最右侧
操作完成后可以得到如下的流程图
如上例所示,SQL语句执行时,SQL Server Analyer(2005后合并入SQL Server Management Studio中)会根据语句自动的优化执行计划。通常,一个批处理可以是多个SQL语句组成的一个单位。(存储过程就是个很好的例子,又如GO语句会将SQL语句自动切割)
SQL语句处理过程包括几步:语法解析、连接、编译与执行。可以在执行前编译或者编译后存在缓存中等待下一次执行,所以用户常常不能感觉到编译与执行的存在。优化器会考虑到系统CPU个数、内存总量,主要优化过程如下
语法解析包含检查SQL语句的语法错误,检查实体名称等;连接用于确认SQL语句中的实体是否可以被访问;优化只优化那个可能存在多种途径访问数据库的语法。
连接器(Algebrizer)