zoukankan      html  css  js  c++  java
  • 记一次查数据的需求

    虽然不是专业的DBA,但是经常和数据库打交道,做一些如写脚本、写SP,优化DB的工作。今天就接到一个查询数据的需求。

    需求

    大致需求是查询7天的、指定bookid清单的列表中查询每本书的PV、UV,包括免费页面和收费页面。
    查询的思路是:

    1.从生产库中导出7天的数据到一张中间表(因为生产库太大太大,根据特定条件导出数据到中间表)

    2.在中间中查询每本书的PV、UV

    问题

    问题1:7天的数据依然很大,2亿多。首先建索引,在where条件上建立索引,索引还是有很管用的,建与不建前后差别很大;

    CREATE INDEX idx_tmp_pvhis_read_url ON tmp_pvhis_read (pageurl) NOLOGGING PARALLEL 4;
    

    问题2:一共有几十本、上百本书,一条一个sql语句效率太低,把这么多单独的sql语句写成一个循环,每个循环中,拿到列表中bookid
    进行查询,然后把查询到的结果放到结果表中。
    只要保证把sql写好,运行之前测试好,把脚本放在PL/SQL Developer中按下F8就可以安心的喝咖啡去了。

    小技巧

    1.根据已有的表复制表结构(不复制数据)

    create table tmp_2014416_vipbook
    as
    select * from tmp_2014415_book where 1 = 2;
    

    2.Oracle PL/SQL 循环游标中的每一个元素

    begin
      for v1 in (select bookid,bookname from tmp_2014415_book t) loop
        dbms_output.put_line(v1.bookid||'    '||v1.bookname);
      end loop;
    end;
    
  • 相关阅读:
    Training: WWW-Robots
    Training: Stegano I
    Encodings: URL
    利用Nginx实现域名转发 不修改主机头
    C++删除目录和复制目录函数
    获取文件大小的函数
    日志打印函数
    拉起上级目录程序
    安卓TabHost页面
    有趣的人形时钟
  • 原文地址:https://www.cnblogs.com/fanyong/p/3646272.html
Copyright © 2011-2022 走看看