0
推荐
2350
阅读
SQL优化一则:取消视图合并
视图合并作为一种常见的查询转换方式,一直在SQL优化上有很好的效果,但在减少待选集(包括块和行),保持高舍弃的思想下,我们会发现视图合并有时候并不那么合适,甚至起到反效果。以下是取消视图合并来给SQL进行优化的一则例子:原SQL语句:with z1 as (
select m.owc_week_number,
&...
0
推荐
2537
阅读
将pentaho资料库迁移到oracle数据库
默认情况下是使用postgresql数据库作为pentaho的资料库。迁移步骤:将oracle JDBC相关驱动$Oracle_home/jdbc/lib下jar文件拷贝到..\tomcat\webapps\pentaho\WEB-INF\lib或..\tomcat\common\lib目录,供pentaho BI服务器访问oracle 数据库使用。另外也需要将oracle JDBC驱动拷贝到administration-console\jdbc目录,否则...
0
推荐
2162
阅读
分析函数DENSE_RANK 和 RANK
在SQL中对表格数据排名时,常可以用到分析排名函数,但Oracle在排名上有两种不同的函数:dense_rank和rank。这两种函数在分析的用途上大同小异,主要区别在于对相同数据的排名。实际举例如下。列出示例数据:SQL> Select rownum id from dual connect by rownum<5
2 union all
&nb...
0
推荐
2011
阅读
强制SQL在限定时间内返回结果
设计出发点:客户的流水线上会有N个工人,每个工人守在流水线的一个岔路上。这时要对每个工人的作业量进行平衡划分,就需要对每个工人的手工剩余工作量进行统计,然后把新的作业流向手头工作量少的工人手里。但假如统计的时间很长,流水线上的作业还没来得及分配岔口号,就会一直走到直线的岔口上,结果导致直线的岔口工...
0
推荐
1880
阅读
一条SQL:补充缺失的最小ID
ITPUB上碰到一个问题,觉得有点意思,顺便就在博客把解决思路列了下来。原问题:面试遇到一条SQL题,查询被删除的ID大概意思是,有一张业务表,字段ID为关键字标识每一张业务单,ID数据类型为int,正常情况下,每增加一条记录,ID值增加1。当表中某些记录被删除后,ID就会存在断裂;如:表中原来10条记录,当2,4,6 被...
0
推荐
2104
阅读
嵌套表的测试(二)
在上一次的测试中,通过加入嵌套表table(column_map)的查询,才能在查询中直接显示所有表格的字段数据。进过对执行计划的检查,发现一些其他信息如下:SQL> explain plan for
2 select c.rowid,
3 e.rowid,
4 &n...
0
推荐
2127
阅读
嵌套表的测试(一)
近期在使用代码设计中涉及到了嵌套表的使用,使用过程中发现一次取数据,无法完全显示所有的字段内容。整个测试过程如下:建立测试表:–建立相关typecreate type mc$column_obj_type1 is object( column_source varchar2(30),
&nb...
0
推荐
2296
阅读
Full Outer Join与left(Right) Outer Join的不同
测试步骤如下:1.创建测试表SQL> create table t
2 (a varchar2(10),
3 b varchar2(10));
Table created
SQL>
SQL> create table s
2 (a varchar2(10),
3 b varchar2(10));
Table created 2.测试在left outer情况下,且外部表的有条件限制的执行计划SQL> explain plan for
...
0
推荐
2314
阅读
wm_concat函数的排序问题
wm_concat在行转列的时候非常有用,但在行转列的过程中的排序问题常常难以控制。可见下面例子:准备测试表:
drop table t;
create table t (n number,m number);
insert into t values(1,1);
insert into t values(5,3);
insert into t values(3,3);
insert into t values(6,5);
insert into t values(7,2);
insert int...
0
推荐
1863
阅读
SQL的外连接对内部表的限制
SQL在进行外连接操作时,where子句中不能对内部表的字段进行限制,否则外连接会失效。Oracle会将外连接直接转换为内连接。 测试步骤如下:1.创建测试表SQL> create table t
2 (a varchar2(10),
3 b varchar2(10));
Table created
SQL>
SQL> cr...