Eyifan专栏

在此写出自己在工作、情感中的心声!

蔡虹ID:aiunong
78963次访问,排名1188好友10人,关注者20
致力在ERP领域发展,目标成为 供应链专家、顾问。欢迎志同道合的朋友与我联系。
aiunong的文章
原创 28 篇
翻译 0 篇
转载 48 篇
评论 104 篇
蔡虹的公告
欢迎光临,希望大家积极参与进来,共同探讨技术上的问题,当然也欢迎大家讲出自己的动人故事!
联系方式:QQ:82232942


最近评论
element117:确实太简单了,呼吁给个实例
zhanghefu:不错,说的很有道理 .顶!
czdvcc:wow power leveling
myshijieye:google粉末涂料
购物篮
充电器
艺术漆
myshijieye:google健康管理
飞凌
配线架
文章分类
收藏
    相册
    个人专集
    其它
    山海关燕塞湖之旅
    理财资讯
    和讯
    第一理财网
    友情联接
    CSDN葛涵涛专栏
    DPR
    Drate的随笔
    EagleZhang
    股市叶弘BLOG
    知识性网站
    PD11 中文教程
    UMLchina论坛
    UML软件工程组织
    企业方案与案例ERP
    永联软件工程UML
    软件工程专家网
    软件研发之窗(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 ORACLE中 大数据表的交叉数据集的查询 SQL优化方法收藏

    新一篇: ORACLE库中 大数据量的表 中索引建立的注意事项 | 旧一篇: IN&EXISTS与NOT IN&NOT EXISTS 的优化原则的讨论(Z)

    由于最近要从2个大表中A(几万条),B(几百万条记录)中查询其中的交集部分,用关联字段的关联查询,太慢,总结出另一个可以解决办法的比较高效语句,特拿来与大家分享,不多说了,下边详细介绍一下我的思路(我的需求是B表的排行,并从A中取部分显示字段信息,以便导出到EXCEL中浏览):

    1、先从B表中查询出结果集写入临时表Temp中,

       假语句:insert into  temp(field1,field2,field3....) select field1,field2, sum(field3) as aa from 表B    where   条件。。。 group by field1,field2

      实例Eg:insert into sa_sale_order(barcode,sellprice1,sumqty) select a.tsxpluno,a.tsxpc,sum(tsxqty) as aa from sa_sale_ct a where (1=1) and '+SEARCH_STR    +' group by a.tsxpluno,a.tsxpc ';

    2、然后再通过比较 A与Temp相应的记录,同时更新Temp表中的其它字段(从A中取得)[A与Temp通过id关联],在此注明一下,用update来更新时,只能一条条的更新,不然会导致死机。

    假语句:update Temp Set  Field4=(select Field4 from 表A where Temp.id=表A.id)

    实例Eg:update sa_sale_order  a  set goodsid=(select goodsid from hq_goods  b  where  .barcode=b.barcode)';

     update sa_sale_order a set goodsname=(select goodsname from hq_goods b where a.barcode=b.barcode)';

    3、经过第2步的更新后,临时表中的数据字段都全赋了值后,即可查询出来 排序数据来,在些oracle中要用到ROWNUM来选用排序中的前、后N名。

    假语句:select * from (select * from Temp  order by  desc/asc ) where ROWNUM<=100

    实例Eg:select * from (select * from sa_sale_order order by sumqty '+order_str +' ) where  ROWNUM<=100 其中Order_str是通过条件来传递的排序(DESC、ASC)

    以上是本人从工作中总结出的一点知识,在此,如果大家如果有对第2步 进行数据更新,有更好的方法或SQL语句,也请大家积极跟帖,一同来完善我们的知识点。 当然大家有更好的办法,也请写在后的跟帖中,以达到在技术上的共同进步!!

     

    发表于 @ 2006年02月27日 17:48:00|评论(loading...)|编辑

    新一篇: ORACLE库中 大数据量的表 中索引建立的注意事项 | 旧一篇: IN&EXISTS与NOT IN&NOT EXISTS 的优化原则的讨论(Z)

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 蔡虹