⑴ oracle sql的执行效率问题
能具体一点或者
有具体的sql语句吗?
getName(a.id)
是在分页条件之前就执行了。
select
t2.*,getName(a.id)
from
(select
t1.*,
rownum
rn
from
(select
a.id
from
a,
where
a.year
=
'2012'
order
by
a.time)
t1
where
rownum
<=
80)
t2
where
t2.rn
>=
61
⑵ oracle数据库sql语句执行效率问题
方法1.如果表中的数据量较大,可以通过time建立分区,再通过条件建立内部索引。
方法2.建立一张和该表一模一样的表(表2),用来存放每个业务的最大业务时间。建立触发器,没次插入数据时更新表2中的业务发生最大时间,最后关联查询。
⑶ 如何测试oracle sql的执行效率
要分析SQL的效能,最好是看看执行计划什么怎么走的,根据你具体业务逻辑以及表中数据量来具体分析.在pl/sql developer 里是按f5
⑷ 谁教我怎么在PLSQL看执行计划还有看执行效率
不知道你使用的是什么执行工具
如果是si object browser 的话,就在执行的右边有一个按钮。先点一下这个按钮。然后再实行。下面会有执行的效果分析。比如cost,byte数,但是这些只是作为一个参考,关键还是在具体的应用中,根据实际的执行时间来判断哪些index的效率高。千万别以为cost高就是花费的时间多,这是误区。
⑸ oracle 一个简单的sql语句执行效率的比较
比较一下的话,语句一查询次数是两次,而语句二只有一次,我们尽量减少查询次数。
语句一其实就是二的另一种实现,其效果是和语句一相同,但多了很多中间不必要的步骤,所以肯定优先选择二。
至于SQL效率问题多看看别人总结的经验会很快了解,多看执行计划。
查看执行计划在SQL PLUS下可以用:explain sql语句;
PLSQL DEVELOPTER下可以写好语句直接按F5;
我们通常知道使用索引要比全表好,使用索引的时候,ORACLE先通过索引快速找到记录的物理地址,然后再通过物理地址找到记录。全表则是直接扫描所有记录,找到想要的,看起来慢多了,但它少了通过索引查找物理地址这一步,所以在有些情况下可能要比索引快,比如表里的记录很少。
绑定变量,你可以参考:
http://..com/question/298893776?&oldq=1
还有子查询,group by,in,not in,很多人都说尽量不用,其实这些都不能一概而论,要看具体的实际情况,参考执行计划,根据需要去选择,千万别有偏见
⑹ oracle怎么查看sql语句效率
最直接的办法就是打开sql_trace:
alter
session
set
sql_trace=true;(要dba权限)
然后到服务器上追踪文件里面查看这个session执行了哪些sql,不过这是session级的.
也可以使用系统级的.
对系统性能有影响
⑺ oracle怎么查看sql执行计划
一般需要借助第三方工具来查看执行计划。
工具:PL/SQL
步骤:
1、打开第三方工具PL/SQL,并登录到指定数据库。
⑻ oracle如何查出历史记录中执行效率低的SQL语句
如果你用的是oracle 10g的话,这个有种很简单的方法就是查看awr报告。
很简单,你登陆到服务器的操作系统,进入到$ORACLE_HOME/rdbms/admin目录下。然后sqlplus "/as sysdba"登陆到数据库,执行
@awrrpt.sql;
然后按照提示一步一步做,注意格式选html(这样方便你阅读)。最后会让你命名这个文件。
完了之后,你把那个文件拷贝到本地用IE打开就看到了。里面有很详细的,包括这段时间占CPU,IO,等等最严重的SQL排行。很好很强大。
-------------------------
至于你说查看当前的sql,你在v$session里查看长期blocking别人的session ID,然后根据这个session id从v$text里就能查到这个sql了。
-------------------------
很明确了吧
⑼ 如何查询oracle 数据库性能,sql资源占用
作为一个开发/测试人员,或多或少都得和数据库打交道,而对数据库的操作归根到底都是SQL语句,所有操作到最后都是操作数据,那么对sql性能的掌控又成了我们工作中一件非常重要的工作。下面简单介绍下一些查看oracle性能的一些实用方法:
1、查询每台机器的连接数
selectt.MACHINE,count(*)fromv$sessiontgroupbyt.MACHINE
这里所说的每台机器是指每个连接oracle数据库的服务器,每个服务器都有配置连接数据库的连接数,以websphere为例,在数据源中,每个数据源都有配置其最大/最小连接数。
执行SQL后,可以看到每个服务器连接oracle数据库的连接数,若某个服务器的连接数非常大,或者已经达到其最大连接数,那么这台服务器上的应用可能有问题导致其连接不能正常释放。
2、查询每个连接数的sql_text
v$session表里存在的连接不是一直都在执行操作,如果sql_hash_value为空或者0,则该连接是空闲的,可以查询哪些连接非空闲,web3是机器名,就是WebSphereApplicationServer的主机名。
selectt.sql_hash_value,t.*fromv$sessiontwheret.MACHINE='web3'andt.sql_hash_value!=0
这个SQL查询出来的结果不能看到具体的SQL语句,需要看具体SQL语句的执行下面的方法。
3、查询每个活动的连接执行什么sql
selectsid,username,sql_hash_value,b.sql_text
fromv$sessiona,v$sqltextb
wherea.sql_hash_value=b.HASH_VALUEanda.MACHINE='web3'
orderbysid,username,sql_hash_value,b.piece
orderby这句话的作用在于,sql_text每条记录不是保存一个完整的sql,需要以sql_hash_value为关键id,以piece排序,如图
Username是执行SQL的数据库用户名,一个sql_hash_value下的SQL_TEXT组合成一个完整的SQL语句。这样就可以看到一个连接执行了哪些SQL。
4、.从V$SQLAREA中查询最占用资源的查询
selectb.usernameusername,a.disk_readsreads,a.executionsexec,
a.disk_reads/decode(a.executions,0,1,a.executions)rds_exec_ratio,
a.sql_textStatement
fromv$sqlareaa,dba_usersb
wherea.parsing_user_id=b.user_id
anda.disk_reads>100000
orderbya.disk_readsdesc;
用buffer_gets列来替换disk_reads列可以得到占用最多内存的sql语句的相关信息。
V$SQL是内存共享SQL区域中已经解析的SQL语句。
该表在SQL性能查看操作中用的比较频繁的一张表,关于这个表的详细信息大家可以去http://apps.hi..com/share/detail/299920#上学习,介绍得比较详细。我这里主要就将该表的常用几个操作简单介绍一下:
1、列出使用频率最高的5个查询:
selectsql_text,executions
from(selectsql_text,executions,
rank()over
(orderbyexecutionsdesc)exec_rank
fromv$sql)
whereexec_rank<=5;
该查询结果列出的是执行最频繁的5个SQL语句。对于这种实用非常频繁的SQL语句,我们需要对其进行持续的优化以达到最佳执行性能。
2、找出需要大量缓冲读取(逻辑读)操作的查询:
selectbuffer_gets,sql_text
from(selectsql_text,buffer_gets,
dense_rank()over
(orderbybuffer_getsdesc)buffer_gets_rank
fromv$sql)
wherebuffer_gets_rank<=5;
这种需要大量缓冲读取(逻辑读)操作的SQL基本是大数据量且逻辑复杂的查询中会遇到,对于这样的大数据量查询SQL语句更加需要持续的关注,并进行优化。
3、持续跟踪有性能影响的SQL。
SELECT*FROM(
SELECTPARSING_USER_ID,EXECUTIONS,SORTS,
COMMAND_TYPE,DISK_READS,sql_textFROMv$sqlarea
ORDERBYdisk_readsDESC
)
WHEREROWNUM<10
这个语句在SQL性能查看中用的比较多,可以明显的看出哪些SQL会影响到数据库性能。
本文主要介绍了使用SQL查询方式查看oracle数据库SQL性能的部分常用方法。此外还有许多工具也能实现SQL性能监控,大家可以在网上搜索相关知识进行学习。
转载仅供参考,版权属于原作者
⑽ oracle sql的执行计划如何查看
方法/步骤
打开PL/SQL Developer软件,请确保plsql能够成功连接到一个oracle数据库。
在PL/SQL Developer中写好一段SQL代码,按F5,或者点击“执行执行计划”图标,PL/SQL Developer会自动打开执行计划窗口,显示该SQL的执行计划。
可以看到窗口上方是sql语句,下方显示执行计划表格。表格的列主要包含描述、用户、对象、成本花费、IO开销等,表格,当然表格列还可以自定义。表格的行包含了查询逻辑的执行顺序和各个步骤信息。
执行计划表格内容的执行顺序是:按照从左至右,从上至下的步骤执行,具体是指执行计划按照层次逐步缩进,从左至右看,缩进最多的那一步最先执行,如果缩进量相同,则按照从上而下的方法判断执行顺序。
通过查看执行计划表格的cost列,即成本花费能够知道哪个步骤花费的成本高,通过查看执行计划表格的行中的objectname列,能够知道是否使用到表中的索引。
步骤阅读
6
本文先简单介绍在plsql中的使用方法,后续会逐步完成各种理论和技巧的使用方法,例如优化器、表连接访问方法、索引等