人事说查询很慢解决!

人事今天打工资单说很慢,半天没有查询出来!我的第一反应就是要找出 人事查询的“sql语句” 和执行计划。

1:现场看查询画面

2:确定查询时间,返回服务器,使用v$session,定位登录时间。

select * from v$session

通过 username, logon_tiem 就可以定位登录的人事

3:通过 v$session找出sql_hash_value 和 paddress(有时候不出要这个参数)

4:通过v$sqlarea 就可以找出sql语句

select sql_text from v$sqlarea

where hash_value=' '

5:如果sql语句太长,可以通过v$sqltext

select * from v$sqltext

where hash_value=''

这里sql语句是从下至上显示。分行显示。

select 年月 , 编码 , 部门 , 姓名 , 出勤天数 , 病假天数 , 事假天数 , 其他假期天数 , 加班天数 , 工资标准 , 考核比重 , 考核系数 , 考核工资 , 基本工资 , 职务工资 , 加班工资 , 月份奖金 , 病假扣款 , 事假扣款 , 养老保险 , 失业保险 , 医疗保险 , 住房公积金 , 补扣工资差异 , 税前工资 , 应税工资 , 个人税扣款 , 个人税扣款1 , 宿舍扣款 , 手机扣款 , 其他补扣款 , 实发工资 , 工资标准 - nvl ( 职务工资 , 0 ) 工资_bas , 发薪日期 , 备注 , 公司
from 建达蓝德薪资单 A , hrmowner.SALARY_PRINT B
where a . 编码 = b . badge_no
and b . print = 'Y'
and a . 年月 = nvl ( : 输入年月 , a . 年月 )
and a . 部门 = nvl ( : 输入部门 , a . 部门 )
and a . 编码 = nvl ( : 输入编号 , a . 编码 )
order by 部门 , 编码

6:查看sql语句执行计划

7:我看到人事的sql语句,然后做了执行计划分析。

发现两个表都是 full_scan_table

8: 确定表的大小:

select count(*) from table_name

9:最后根据WHERE条件创建了index.

人事反馈查询非常快,几秒钟!

ok!

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22934571/viewspace-1046074/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22934571/viewspace-1046074/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值