人事今天打工资单说很慢,半天没有查询出来!我的第一反应就是要找出 人事查询的“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/
709

被折叠的 条评论
为什么被折叠?



