当前位置:首页 » 编程语言 » 查看sql语句性能

查看sql语句性能

发布时间: 2022-03-14 01:45:39

1. plsql中语句性能如何查看

V_$SQLAREA视图提供了执行的细节。(执行、读取磁盘和读取缓冲区的次数)
--性能最差的SQL
SELECT * FROM ( SELECT PARSING_USER_ID EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_text
FROM v$sqlarea
ORDER BY disk_reads DESC)
WHERE ROWNUM<200
--效率最低的语句
Select EXECUTIONS,DISK_READS,BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,
SQL_TEXT
From V$SQLAREA
WHERE EXECUTIONS>0 And BUFFER_GETS>0 And (BUFFER_GETS-DISK_READS)/BUFFER_GETS<0.8
ORDER By 4 DESC;

2. 从哪些方面,sql语句性能如何分析

一段SQL代码写好以后,可以通过查看SQL的执行计划,初步预测该SQL在运行时的性能好坏,尤其是在发现某个SQL语句的效率较差时,我们可以通过查看执行计划,分析出该SQL代码的问题所在。

1、 打开熟悉的查看工具:PL/SQL Developer。
在PL/SQL Developer中写好一段SQL代码后,按F5,PL/SQL Developer会自动打开执行计划窗口,显示该SQL的执行计划。

2、 查看总COST,获得资源耗费的总体印象
一般而言,执行计划第一行所对应的COST(即成本耗费)值,反应了运行这段SQL的总体估计成本,单看这个总成本没有实际意义,但可以拿它与相同逻辑不同执行计划的SQL的总体COST进行比较,通常COST低的执行计划要好一些。

3、 按照从左至右,从上至下的方法,了解执行计划的执行步骤
执行计划按照层次逐步缩进,从左至右看,缩进最多的那一步,最先执行,如果缩进量相同,则按照从上而下的方法判断执行顺序,可粗略认为上面的步骤优先执行。每一个执行步骤都有对应的COST,可从单步COST的高低,以及单步的估计结果集(对应ROWS/基数),来分析表的访问方式,连接顺序以及连接方式是否合理。

4、 分析表的访问方式
表的访问方式主要是两种:全表扫描(TABLE ACCESS FULL)和索引扫描(INDEX SCAN),如果表上存在选择性很好的索引,却走了全表扫描,而且是大表的全表扫描,就说明表的访问方式可能存在问题;若大表上没有合适的索引而走了全表扫描,就需要分析能否建立索引,或者是否能选择更合适的表连接方式和连接顺序以提高效率。

5、 分析表的连接方式和连接顺序
表的连接顺序:就是以哪张表作为驱动表来连接其他表的先后访问顺序。
表的连接方式:简单来讲,就是两个表获得满足条件的数据时的连接过程。主要有三种表连接方式,嵌套循环(NESTED LOOPS)、哈希连接(HASH JOIN)和排序-合并连接(SORT MERGE JOIN)。我们常见得是嵌套循环和哈希连接。
嵌套循环:最适用也是最简单的连接方式。类似于用两层循环处理两个游标,外层游标称作驱动表,Oracle检索驱动表的数据,一条一条的代入内层游标,查找满足WHERE条件的所有数据,因此内层游标表中可用索引的选择性越好,嵌套循环连接的性能就越高。
哈希连接:先将驱动表的数据按照条件字段以散列的方式放入内存,然后在内存中匹配满足条件的行。哈希连接需要有合适的内存,而且必须在CBO优化模式下,连接两表的WHERE条件有等号的情况下才可以使用。哈希连接在表的数据量较大,表中没有合适的索引可用时比嵌套循环的效率要高。

3. 关于sql语句的性能问题

在多数情况下是第二效率最高,直接使用索引进行筛选。第一种在进行union的时候会进行一些额外的操作,第三种在某些早期数据库、桌面数据库、简单数据库下可能会不走索引。

4. 检查SQL语句性能

exlpain sql语句

5. 【查询优化】怎样用SQL语句查看查询的性能指标

(有关TSQL语句查询所产生的磁盘活动量) --显示有关由Transact-SQL 语句生成的磁盘活动量的信息 SET STATISTICS IOON--关闭有关由Transact-SQL 语句生成的磁盘活动量的信息 SET STATISTICS IOOFF 显示的信息如下: (SQL语句为:select * fromnote500)其中: 扫描计数:在查询中涉及到的表被访问的次数; 逻辑读取:从数据缓冲中读取的数据页数; 物理读取:从物理磁盘中往缓冲读取的数据页数; 预读:根据执行计划从物理磁盘中往缓冲读取的数据页数; 其中对于首次查询一般情况下会有一下关系:逻辑读取=物理读取+预读(其中的具体联系,由于已经在之前的博客文章中提到,就不再详细说明(文章名为 【查询优化】MSSQL查询执行流程)) 同理,后面的lob逻辑读取、物理读取、预读概念理解差不多,只是是对相应表进行更新或插入操作时体现。 对于扫描计数,以上图片的查询没有连接查询,因此意义不大。不过,如果连接查询来说,特别是循环查询那种,比如说自连接,如果循环次数越多,则扫描次数也就越多,则会使得查询的效率越低。这是扫描计数是一个比较重要的性能体现参数。 对于逻辑读取,由于SQLSERVER中对数据进行任何操作都要把数据读入到缓冲当中,如果逻辑读取的页数越多,则查询的性能越低。为此,逻辑读取一般都是查询性能体现的一个重要参数。 二、SET STATISTICSTIME(SQL Server解析和编译时间) 上面显示的信息表明,执行这次查询使用了多少CPU运行时间和运行查询使用了多少时间。CPU运行时间是对运行查询所需要的CPU资源的一种相对稳定的测量方法,与CPU的忙闲程度没有关系。但是,每次运行查询时这一数字也会有所不同,只是变化的范围没有总时间变化大。总时间是对查询执行所需要的时间(不计算阻塞或读数据的时间),由于服务器上的负载是在不断变化的,因此这一数据的变化范围有时会相当地大。 总的来说,量化地来看一个查询语句的性能可以在几个参数进行比较: 1、CPU时间。比较查询所要占用的CPU资源时间; 2、I/O。可以比较查询的循环扫描次数和逻辑读取的数据量;

6. sql语句,性能问题

写一个过程,
从blackuser_temp 表循环取出msisdn,再循环删除blackuser表中相应msisdn的数据。
这样可以保证执行计划稳定。保证效率。一个前提是你的blackuser表需要有msisdn的索引。否则怎么弄都是一个慢。
过程大概这样写,你可以根据需要加其他逻辑:
create or replace procere del_black_user_p
as
cursor msisdn_cur is select msisdn from blackuser_temp;
begin
for rec in msisdn_cur loop
delete /*+ index(blackuser) */ blackuser where msisdn = rec.msisdn;
end loop;
commit; --根据需要考虑加不加commit;或者考虑用计数器计数再批量提交。
end;

7. 如何测试sql语句性能,提高执行效率,sql2008

你是用什么工具?如果你用的是plsql/developer。你执行计划就行了。
选中你语句,按F5,可以看出语句块执行的效率,从而分析出哪一块效率低下需要优化

8. 如何测试sql语句性能,提高执行效率

有时候我们经常为我们的sql语句执行效率低下发愁,反复优化后,可还是得不到提高

那么你就用这条语句找出你sql到底是在哪里慢了

示例:
SET STATISTICS io ON
SET STATISTICS time
ON
go
---你要测试的sql语句
select top 100 * from
TBL_Cot_RecStaticList
go
SET STATISTICS profile
OFF
SET STATISTICS io OFF
SET STATISTICS time OFF
显示信息:

SQL Server 分析和编译时间:

CPU 时间 = 0 毫秒,占用时间 = 59 毫秒。

(100 行受影响) 表 'TBL_Cot_RecStaticList'。扫描计数 1,逻辑读取 14 次,物理读取 2
次,预读 992 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 306 毫秒。

SQL Server 分析和编译时间: CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。

SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。

SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。

9. 几个检查数据库性能的SQL语句

SIMPLE:简单SELECT(不使用UNION或子查询等)
PRIMARY:最外面的SELECT
UNION:UNION中的第二个或后面的SELECT语句
DEPENDENTUNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询
UNIONRESULT:UNION的结果。
SUBQUERY:子查询中的第一个SELECT
DEPENDENTSUBQUERY:子查询中的第一个SELECT,取决于外面的查询
DERIVED:导出表的SELECT(FROM子句的子查询)

10. 分析此sql语句的性能

1.这条sql的性能要看表a的数据量大小,以及xm为空的记录数多少,没什么可优化的了
2.不清楚你在问什么,你现在不就是在批量更新么
3.相同的where条件的话当然是select快一些。
4.没多少捷径,建议先看些基础的concept,然后再谈优化。基本概念最重要

热点内容
thelinuxkernel 发布:2025-07-21 07:23:28 浏览:558
安卓刷机和线刷有什么区别 发布:2025-07-21 07:16:23 浏览:242
炫舞节奏脚本 发布:2025-07-21 06:59:55 浏览:578
xlsx表格保护密码忘记如何处理 发布:2025-07-21 06:33:57 浏览:659
儿童密码日记本的通用密码是什么 发布:2025-07-21 06:28:31 浏览:234
移动默认pppoe密码是什么 发布:2025-07-21 06:28:28 浏览:711
工资表数据库 发布:2025-07-21 06:22:54 浏览:694
c语言青蛙过河 发布:2025-07-21 06:22:47 浏览:786
安卓数据转换器实体店在哪里 发布:2025-07-21 06:12:53 浏览:572
网站后台上传不了图片 发布:2025-07-21 06:12:22 浏览:876