摘要: 1.内联视图:是from语句后面的子查询。一般会进行视图合并,如果要禁止视图合并需要用/* +no_merge */提示,或者当子查询中含有order by、聚集函数、集合操作符, rownum等时。2.谓语前推:用来将谓语从一个内含查询块中应用到不可合并的查询块中。目标就是允许索引的使用或者让其他对于数据集的筛选在查询中能够尽快的进行。使用rownum会禁止谓语 前推。所以使用rownum需要十分小心。 阅读全文
posted @ 2013-05-05 21:22 原想 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 写SQL语句时应该避免在索引列上做计算,能移到另一方的都移动到另一方。下面是测试的例子,索引列为D_DATE 1 SQL> select count(1) 2 2 from tywtx a 3 3 where a.d_date >= to_date('20100312', 'yyyymmdd') 4 4 and a.d_date < to_date('20100312', 'yyyymmdd') + 1 5 5 ; 6 7 COUNT(1) 8 ---------- 9 5910 11 Executed in 0 阅读全文
posted @ 2013-05-04 10:32 原想 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 下面是三个语句的测试结果,测试表的数据为25341223行(千万级)SQL> alter system flush shared_pool;System alteredExecuted in 0.047 secondsSQL> select count(1) from thqlog;COUNT(1)----------25341223Executed in 12.297 secondsSQL> alter system flush shared_pool;System alteredExecuted in 0.062 secondsSQL> select count(* 阅读全文
posted @ 2013-05-04 09:48 原想 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 1 procedure TForm1.BtnReadClick(Sender: TObject); 2 var 3 txtFile: TextFile; 4 s: String[14]; //读取定长的字符串,这样的话就可以将列分开 5 i: Integer; 6 begin 7 //MyTxtFile.txt 8 Memo1.Lines.Clear; 9 AssignFile(txtFile,'MyTxtFile.txt');10 Reset(txtFile); //以只读方式打开文件11 try12 while not EOF(txtFile) d... 阅读全文
posted @ 2013-01-01 15:48 原想 阅读(10169) 评论(0) 推荐(0) 编辑
摘要: 1 --窗口函数简介 2 --用途:用于计算一定记录范围内,一定值域内,一定时间内的累计和或者移动平均值 3 --能与窗口函数搭配的聚合函数为:sum avg min max first_value last_value 4 -- count stddev variance 5 --实例:1,计算1到12个月的累计和 6 --计算累积销量,注意开窗语句为前面所有行到当前行 7 select a.month, 8 sum(a.amount), 9 sum(sum(a.amount)) over(order b... 阅读全文
posted @ 2012-11-12 22:36 原想 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 1 --NTILE(n)函数用于将函数等分为N部分,并为每一部分分配一个编号 2 --下面是实例: 3 --将分组后的数据等分为十个组,并展示出返回数据的分组情况 4 select * 5 from (select a.prd_type_id, 6 a.month, 7 sum(a.amount), 8 ntile(10) over(order by sum(a.amount) desc) as tile 9 from all_sales a10 where a... 阅读全文
posted @ 2012-11-12 22:11 原想 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 1 --Rank()返回数据项的排名,排名相同时会出现名次跳跃的情况 2 --Dense_Rank()返回数据项的排名,排名相同不会出现跳跃的情况 3 select a.prd_type_id, 4 sum(a.amount), 5 rank() over(order by sum(a.amount) desc) /*rank函数*/, 6 dense_rank() over(order by sum(a.amount) desc) /*dense_rank函数*/ 7 from all_sales a 8 where a.year = 200... 阅读全文
posted @ 2012-11-04 17:09 原想 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 1 --Group_ID:用于消除Group By子句中的返回的重复记录,Group by子句不接受任何参数2 --如果某个特定的分组重复n次,那么GROUP_ID返回0—n-1之间的一个整数3 --下面是实例:4 select a.division_id, a.job_id, avg(a.salary), group_id()5 from employees2 a6 group by a.division_id, rollup(a.division_id, a.job_id)7 having group_id() = 0 /*用于消除重复*/8 order by a.divi... 阅读全文
posted @ 2012-11-04 16:06 原想 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 1 --1.Grouping_id 2 --Grouping_id借助having子句可以对记录进行过滤 3 --将不包含小计或者总计的记录过滤掉 4 --Grouping_id可以返回一列或者多列,返回Grouping位向量的十进制值 5 select grouping(a.division_id), 6 grouping(a.job_id), 7 grouping_id(a.division_id, a.job_id), 8 sum(a.salary) 9 from employees2 a10 group by cube(a.divisi... 阅读全文
posted @ 2012-11-04 16:00 原想 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 1 --1.Grouping 函数可以接受一列,返回0或者1 如果列值为空那么返回1 否则返回0 2 select grouping(a.division_id),a.division_id, sum(a.salary) 3 from employees2 a 4 group by rollup(a.division_id) 5 order by a.division_id 6 7 运行结果为: 8 GROUPING(A.DIVISION_ID) DIVISION_ID SUM(A.SALARY) 9 1 0 BUS 161000010 2 ... 阅读全文
posted @ 2012-11-04 11:43 原想 阅读(183) 评论(0) 推荐(0) 编辑