oracle 排序小节

 经过这几年 在项目中的实际经验 想把有些东西写下来。今天先写 排序上面的东西, 随便点吧, 想到哪写到哪 , 这里是 oracle 11 g


  随机排序:    select * from scott.emp order by dbms_random.value();

  对了  还有 order by 1:  select * from   scott.emp order by 1 desc;

 

  组合排序   select * from   scott.emp order by 8 asc, 5 desc;   /     select * from   scott.emp order by deptno asc, sal  desc;

 

  空值排序: select * from   scott.emp order by comm nulls first; 
                      select * from   scott.emp order by comm nulls last;


 把特殊值排在最前:   

      select * from scott.emp order by case  when job='ANALYST' then 1  else 2 end ;
      select * from scott.emp order by case job  when 'ANALYST' then 1  when 'SALESMAN' then 2  else 3 end ;

把特殊值排在最前:  也有童鞋 是
       select  scott.emp.*, case  when job='ANALYST' then 1  else 2 end  orderCase  from  scott.emp   order by orderCase  ;  当然也可以。  按照特殊值排序,一般是固定的那么几个值。


 不过很多时候 我们排序 用起来是很谨慎的,  主要是在性能上面考虑的, 排序一般是在 PGA 内存区排序的, 如果PGA内存不够装载数据, 会在磁盘上划分空间来存储数据,然后再排序, 这叫磁盘排序,  再内存中排序花的费就大了,  如果磁盘排序就会更大的......
     





 



 

 


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值