
打开PL/SQL Developer软件,请确保plsql能够成功连接到一个oracle数据库。
请点击输入图片描述
在PL/SQL Developer中写好一段SQL代码,按F5,或者点击“执行执行计划”图标,PL/SQL Developer会自动打开执行计划窗口,显示该SQL的执行计划。
可以看到窗口上方是sql语句,下方显示执行计划表格。表格的列主要包含描述、用户、对象、成本花费、IO开销等,表格,当然表格列还可以自定义。表格的行包含了查询逻辑的执行顺序和各个步骤信息。
请点击输入图片描述
执行计划表格内容的执行顺序是:按照从左至右,从上至下的步骤执行,具体是指执行计划按照层次逐步缩进,从左至右看,缩进最多的那一步最先执行,如果缩进量相同,则按照从上而下的方法判断执行顺序。
请点击输入图片描述
通过查看执行计划表格的cost列,即成本花费能够知道哪个步骤花费的成本高,通过查看执行计划表格的行中的objectname列,能够知道是否使用到表中的索引。
1.输入一个查询语句看看SQL Server是如何显示查询计划的吧。select v.OrderID, v.CustomerID, v.CustomerName, v.OrderDate, v.SumMoney, v.Finished
from OrdersView as v
where v.OrderDate >= '2010-12-1' and v.OrderDate <'2011-12-1'
其中,OrdersView是一个视图,其定义如下:
SELECT dbo.Orders.OrderID, dbo.Orders.CustomerID, dbo.Orders.OrderDate,
dbo.Orders.SumMoney, dbo.Orders.Finished,
ISNULL(dbo.Customers.CustomerName, N'') AS CustomerName
FROM dbo.Orders LEFT OUTER JOIN
dbo.Customers ON dbo.Orders.CustomerID = dbo.Customers.CustomerID
对于前一句查询,SQL Server给出的查询计划如下(点击工具栏上的【显示估计的执行计划】按钮):
从这个图中,我们至少可以得到3个有用的信息:
1. 哪些执行步骤花费的成本比较高。显然,最右边的二个步骤的成本是比较高的。
2. 哪些执行步骤产生的数据量比较多。对于每个步骤所产生的数据量, SQL Server的执行计划是用【线条粗细】来表示的,因此也很容易地从分辨出来。
3. 每一步执行了什么样的动作。
对于一个比较慢的查询来说,我们通常要知道哪些步骤的成本比较高,进而,可以尝试一些改进的方法。 一般来说,如果您不能通过:提高硬件性能或者调整OS,SQL Server的设置之类的方式来解决问题,那么剩下的可选方法通常也只有以下这些了:
1. 为【scan】这类 *** 作增加相应字段的索引。
2. 有时重建索引或许也是有效的,具体情形请参考后文。
3. 调整语句结构,引导SQL Server采用其它的查询方案去执行。
4. 调整表结构(分表或者分区)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)