sql
qq_22140799
这个作者很懒,什么都没留下…
展开
-
mysql利用自定义变量实现分析函数
公司存在一个需求,对考勤进行统计。考勤机的信息记录如下: 员工编号|员工名称| 打卡日期 |打卡时间 select * from table_name; 001 |li |2016-10-20 |18:15 002 |yang |2016-10-20 |09:28 003 |li1 |2016-10-20 |09:26 003原创 2016-10-24 11:01:59 · 432 阅读 · 0 评论 -
对超长sql优化体会
可能对于大多数人对于超长的sql优化,可能看sql去理解逻辑都要花很长时间,尤其在帮别人优化的过程中,在不理解业务的情况下更是无从下手,其实对于超长sql的优化,其实并没有想象中的那么难,对于那些超长sql,我们只需要明白,其中有特殊的操作,比如在sql中有没有视图,有没有子查询,有没有标量查询,这些都是一些要考虑的问题,这只是观察,并不需要我们去理解真正sql想表达的含义。当我们看完sql以后,原创 2016-11-04 09:26:30 · 2579 阅读 · 0 评论 -
利用列转行函数减少表的访问
sql我只提供一需要改的sql,具体如下,写表已经经过替换: select t.id, a as a,0 as LOC,col,col1,col2,col3 from tabne_name t where a is not null union all select t.id,b as a,1 as LOC,col,col1,col2,col3 from tabne_name t原创 2016-11-09 10:07:48 · 249 阅读 · 0 评论 -
利用sql改写去掉执行计划中的filter
由于涉及到一下敏感的数据,所以只能用试验环境演示,情况如下: create table test as select * from dba_objects ; create table test1 as select * from dba_objects ; select * from (select * from test b whe原创 2016-10-28 14:52:21 · 1111 阅读 · 0 评论 -
乱用函数导致sql变慢
由于涉及到一些重要数据不能展现,所以只能用测试表: create table test as select * from dba_object; create index ind_sb1 on test(owner,object_name); explain plan for select COUNT(*) from test where owner='SCOTT' and s原创 2016-10-28 17:53:41 · 231 阅读 · 0 评论 -
exists比in高效?
实例结果如下: 用exists的执行计划如下: select * from emp a where exists (select 1 from emp b where a.empno=b.empno start with empno=7839 connect by prior empno = mgr); 用in的执行计划如下: select * from emp a wh原创 2016-10-31 11:55:47 · 281 阅读 · 0 评论 -
一个相对较难需求的实现
前提: 某施人员(工号)会进行排班施工(有开始结束时间,同一工序持续时间不一定相同), 工序包括某几个步骤,用逗号分隔。有工号排班表,工序步骤表。 要求: 统计出排班的步骤冲突情况。具体为某一步骤会同时被3个或3个以上施工人员同时占用情况. 求输出结果: 步骤,工号(同逗号分开),冲突时间(第三个冲突开始时间) 如下例有2个冲突 L1 N1,N2,N3 18:08:20 L原创 2016-11-23 14:36:40 · 253 阅读 · 0 评论