小铁匠ME

导航

2013年8月26日 #

用shell查找某个目录下最大文件

摘要: 网上资料学习:1、查找当前目录下最大文件(包括子目录里文件):find . -type f -exec stat -c "%s %n" {} \; | sort -nr | head -12、只考察目录下的文件,排除掉目录(每一行以-开头)ls -l | awk '/^-/ {print $5 $8}' | sort -nr | head -13、下面这种方法会把子目录当做一个文件来看。du -s * | sort -nr | head -1 阅读全文

posted @ 2013-08-26 23:29 小铁匠ME 阅读(341) 评论(0) 推荐(0) 编辑

2013年8月23日 #

一个令人困惑的低效SQL

摘要: 整理之前的优化案例,觉得下面这个应该是开发很难发现也会很困惑的一个低效SQL。看下面这个SQL。你看到这个SQL会不会感觉很正常。其实我刚看到也觉得正常得不得了。但是测试后它确实效率很低。select test1.object_id, test1.object_name, test1.owner, test1.object_type from test1 inner join (select test1.object_id as object_id1, test2.object_id as object_id2, ... 阅读全文

posted @ 2013-08-23 18:35 小铁匠ME 阅读(424) 评论(0) 推荐(0) 编辑

表的限制条件一定要放到表同一级别的关联条件中

摘要: 曾经这样要求开发人员写SQL:要将表的限制条件放到与该表同一级别的where限制条件中。今天经过测试,在有外连接时,要将表的限制条件放到与表同一级别的on限制中(除了下面给出的例子,还包括对inner join的表限制条件放到外连接的on限制条件中)。看下面这个例子:测试数据:create table t1 as select * from dba_objects;--13436行create table t2 as select * from dba_objects;--13435行create table t3 as select * from t2;--13434行insert into 阅读全文

posted @ 2013-08-23 17:03 小铁匠ME 阅读(651) 评论(0) 推荐(0) 编辑

2013年8月22日 #

Oracle 分析函数 "ORA-30485: 在窗口说明中丢失 ORDER BY 表达式"

摘要: 跟顺序有关的几个分析函数row_number、rank、dense_rank、lead和lag的over窗口里,都必须有order_by_clause。其他几个如:first_value、last_value、max、min、avg、sum、count等,partition_by_clause和order_by_clause都是可选项。如下测试:SQL> select deptno,sal,row_number()over(partition by deptno) from emp;select deptno,sal,row_number()over(partition by deptn 阅读全文

posted @ 2013-08-22 20:05 小铁匠ME 阅读(6829) 评论(0) 推荐(0) 编辑

Oracle 分析函数之聚集函数(MAX、MIN、AVG和SUM)

摘要: MAX 查找组中表达式的最大值 MAX(COL ) OVER ( [ ] )MIN 查找组中表达式的最小值 MIN(COL ) OVER ( [ ] )AVG 计算组中表达式的平均值 AVG(COL ) OVER ( [ ] )SUM 计算组中表达式的累积和 SUM(COL ) OVER ( [ ] )简单测试:SQL> select deptno, 2 ename, 3 sal, 4 max(sal) over(partition by deptno order by sal) max_sal_asc, 5 ... 阅读全文

posted @ 2013-08-22 19:59 小铁匠ME 阅读(1430) 评论(0) 推荐(0) 编辑

Oracle分析函数之FIRST_VALUE和LAST_VALUE

摘要: FIRST_VALUE 返回组中数据窗口的第一个值 FIRST_VALUE ( [scalar_expression )OVER ( [ partition_by_clause ] order_by_clause ) LAST_VALUE 返回组中数据窗口的最后一个值 LAST_VALUE ( [scalar_expression )OVER ( [ partition_by_clause ] order_by_clause ) 一个简单例子:SQL> select deptno, 2 sal, 3 ename, 4 first_va... 阅读全文

posted @ 2013-08-22 19:48 小铁匠ME 阅读(2038) 评论(0) 推荐(0) 编辑

Oracle分析函数之LEAD和LAG

摘要: LAG 访问结果集中当前行之前的行 LAG (value_expr [,offset] [,default])OVER ( [ partition_by_clause ] order_by_clause )LEAD 访问结果集中当前后之后的行 lead(value_expr [,offset][,default]) over([partition_by_clause] order by Order_by_clause)参数值说明:value_expr 值表达式,通常是字段,也可是是表达式。value_expr本身不支持分析函数,也就是lead不支持多层调用。offset 偏移量,如果off.. 阅读全文

posted @ 2013-08-22 19:39 小铁匠ME 阅读(1365) 评论(0) 推荐(0) 编辑

Oracle 排序分析函数之ROW_NUMBER、RANK和DENSE_RANK

摘要: 我们都知道分析函数功能很强大,可能需要写很复杂的标准SQL才能办到或不可能办到的事,使用分析函数却能很容易完成。我们经常会用到排序分析函数,如ROW_NUMBER,RANK,DENSE_RANK。这三个函数都是排序函数,那么有什么不同呢,下面看个例子:SQL> select empno, 2 ename, 3 deptno, 4 sal, 5 row_number() over(partition by deptno order by sal) sql_rownum, 6 rank() over(part... 阅读全文

posted @ 2013-08-22 18:04 小铁匠ME 阅读(867) 评论(0) 推荐(0) 编辑

SQL中子查询为聚合函数时的优化

摘要: 测试数据:create table test1 as select * from dba_objects where rownum select * 2 from test 3 where object_id = 4 (select max(object_id) 5 from test1 6 where test1.object_name = test.object_name);已选择10行。已用时间: 00: 00: 00.07执行计划---------------------------------------... 阅读全文

posted @ 2013-08-22 12:46 小铁匠ME 阅读(1265) 评论(0) 推荐(0) 编辑

merge into 和 update 的效率对比

摘要: 以前只考虑 merge into 只是在特定场合下方便才使用的,今天才发现,merge into 竟然会比 update 在更新数据时有这么大的改进。其实呢,merge into部分的update和update也没啥不同的,不同的地方在于使用merge into后执行计划变了。赶紧测试看看,但是看到下面的结果,我和我的小伙伴惊呆了~测试数据:create table test1 as select * from dba_objects where rownum alter system flush shared_pool;系统已更改。SQL> alter system flush buf 阅读全文

posted @ 2013-08-22 12:29 小铁匠ME 阅读(15492) 评论(0) 推荐(1) 编辑