`
oufeng1983
  • 浏览: 25127 次
社区版块
存档分类
最新评论

使用视图实现数据统计加快程序速度

阅读更多

前几天客户要下一个报表.数据大概是2000条,报表结果是要进行多次统计的.如把统计逻辑放到程序中是不可选的.我试了下.下个报表要2分钟.我试了下视图只用了1秒不到.(视图当然会比应用程序快这是一定的.关键是怎样做到统计逻辑在视图中实现)下面介绍下:

 逻辑是这样的:

A表是用户信息表.B表是用户积分情况表,C表是用户积分使用情况表,B表有两种状态.1-用户可使用的积分,2-用户还不能使用的积分,C表有2种状态.1-已使用了的积分数据,2-已冻结的积分数据,现在要求用户的总积分数,已使用积分数,冻结的积分数,还可使用积分数.

我是这样做的:

sql 代码
  1. create or replace view integral_sum_view as  
  2. select "YGJL_PERSONNEL_ID","P_MOBILE","SUMNUMBER","SUMNUMBERAFFIRM","SUMNUMBERPUT","INTEGRAL" from (   
  3.    select a.YGJL_PERSONNEL_ID as YGJL_PERSONNEL_ID   
  4.    decode(b.sumNumber,null,0,b.sumNumber) as sumNumber,--积分总数   
  5.    decode(c.sumNumberAffirm,null,0,c.sumNumberAffirm) as sumNumberAffirm,--已销减积分   
  6.   decode(d.sumNumberPut,null,0,d.sumNumberPut) as sumNumberPut,--当前冻结积分   
  7.   ( (to_number(decode(b.sumNumber,null,0,b.sumNumber))-   
  8.   to_number(decode(c.sumNumberAffirm,null,0,c.sumNumberAffirm)))-   
  9.   to_number(decode(d.sumNumberPut,null,0,d.sumNumberPut))) as INTEGRAL--可用积分   
  10.   from  A a left join(   
  11.   
  12. --统计积分总数   
  13.   select this_.YGJL_PERSONNEL_ID, sum( decode(this_.ITEM_INTEGRAL,null,0,this_.item_integral)  ) as sumNumber from  
  14.   B this_ where   this_.STATE='3'  group by (this_.YGJL_PERSONNEL_ID)   
  15.    ) b on a.ygjl_personnel_id = b.ygjl_personnel_id left join(   
  16. --统计已销减积分   
  17.   select this_.YGJL_PERSONNEL_ID,  sum( decode(this_.TRADE_INTEGRAL,null,0,this_.TRADE_INTEGRAL)  ) as sumNumberAffirm from  
  18.   C this_,  tygjldept5_ where this_.STATE='1'   
  19.   group by (this_.YGJL_PERSONNEL_ID)) c on a.ygjl_personnel_id = c.ygjl_personnel_id left join(   
  20. --统计当前审请积分   
  21.   select this_.YGJL_PERSONNEL_ID, sum( decode(this_.TRADE_INTEGRAL,null,0,this_.TRADE_INTEGRAL)  ) as sumNumberPut from  
  22.   T_INTEGRAL_TRADE this_,   
  23.  and not this_.STATE='2' group by (this_.YGJL_PERSONNEL_ID)) d on a.ygjl_personnel_id = d.ygjl_personnel_id   
  24.   
  25.    )  
仅供学习...........................................
分享到:
评论
3 楼 oufeng1983 2007-06-19  
Lucas Lee 写道
两分钟对1秒?什么对比
我只是比划一下而已.不能把它当作确切数字来说
2 楼 fujohnwang 2007-06-16  
你拿到mysql上试试
1 楼 LucasLee 2007-06-15  
两分钟对1秒?什么对比

相关推荐

    SQL SERVER视图和存储过程在进销存系统开发中的应用——以.NET开发环境实现统计业绩提成为例.pdf

    使用存储过程的好处包括提升程序的可移植性、加快执行速度、降低网络负载以及增强数据库的安全性。 2. 视图和存储过程在.NET开发环境中的应用 在开发.NET环境下的进销存系统时,尤其是在业绩提成统计模块的开发中...

    SAS (统计分析软件)课件:第6章 数据步文件管理.ppt

    5. **INDEX=**: 为数据集创建索引,加快对特定变量的访问速度。 **特殊数据集名** - **_data_**: 当省略数据集名称时,SAS会自动使用_data_作为当前数据集的名称。例如,`data _data_;`与`data;`效果相同,表示使用...

    基于MVC ORACLE ODAC的企业内部业务数据系统的设计与实现.pdf

    这种设计旨在解决企业在数据统计、呈现、维护以及跨国数据同步方面遇到的问题,提高系统的灵活性、效率和可靠性。 首先,MVC架构是一种广泛应用于Web应用开发的设计模式,它将应用程序分为三个核心部分:模型...

    用c#写的多线程PING的程序

    在这个项目中,我们讨论的是一个使用C#编程语言实现的多线程`ping`程序,它可以同时对多个目标进行探测,并且能够统计和展示结果。下面我们将深入探讨这个程序涉及的技术点。 首先,我们要了解C#中的多线程。在C#中...

    基于微信小程序的Flask订餐系统的设计与实现.docx

    ### 基于微信小程序的Flask订餐系统的设计与实现 #### 摘要与研究背景 在当今数字化时代,随着人们生活节奏的加快,越来越多的人选择通过线上平台进行订餐服务。与此同时,餐饮商家也需要一个高效便捷的管理工具来...

    WeiPhp框架在微信小程序后台开发的优势与使用方法——以校园资讯发布平台为例.pdf

    WeiPhp框架内建了多种API接口,这些接口能够很好地对接微信小程序的各项功能,例如消息推送、用户管理、数据统计等。开发者只需要按照WeiPhp框架的规范进行编码,就可以实现与微信小程序前端的无缝对接。这样,不仅...

    让Oracle跑的更快2基于海量数据的数据库设计与优化

    通过合理配置SGA(系统全局区域)和PGA(程序全局区域)的大小,可以提高内存的使用效率,减少磁盘I/O操作,从而加快数据库响应速度。 4. SQL优化:SQL语句的编写对数据库性能有着直接影响。DBA需要掌握SQL调优技术...

    对充分使用SQL命令提高VFP编程效率的探讨.pdf

    合理设计和使用索引能够显著加快数据检索速度,但需要注意过度索引可能带来的维护和存储开销。 最后,SQL的事务处理(Transaction)确保了数据操作的一致性和可靠性。在VFP中,可以使用BEGIN TRANSACTION、COMMIT和...

    SQLServer的性能调优:解决查询速度慢的五种方法

    有几个DMV提供有关查询统计信息,执行计划,最近查询等的数据。这些可以一起使用,以提供一些惊人的见解。例如,下面的查询可用于查找使用最多读取,写入,工作时间(CPU)等的查询。查询结果如下所示。下面的图片...

    在线教学系统微信小程序

    开发者可以使用WXML来创建视图元素,如文字、图片、按钮等,并通过数据绑定与JavaScript进行交互,实现动态内容的更新。 2. WXSS (WeiXin Style Sheet): 类似于CSS,WXSS用于控制微信小程序中WXML元素的样式。它...

    Developer开发文章

    - 使用缓存机制来加快加载速度 #### 52. 如何在FORM中同时加入水平与垂直滚动条? 可以使用 `SCROLLBAR-DEFINE` 函数定义两个滚动条,并分别与水平和垂直方向关联。此外,需要设置滚动条的范围和步长。 #### 53. ...

    asp.net酒店进销存系统的设计与实现(毕设文档+源代码).zip

    3. 数据库索引优化:合理创建数据库索引,加快查询速度。 4. 页面压缩与合并:减少HTTP请求,提高页面加载速度。 五、系统部署与维护 1. 使用IIS作为Web服务器,确保系统的稳定运行。 2. 定期备份数据库,防止...

    浅谈对SQL数据库系统性能的优化.pdf

    索引是一种加快数据检索速度的数据结构,它通过特定的数据组织方式来快速定位数据记录的位置,大大减少了数据库在执行查询操作时的数据检索范围。索引的建立需要对数据进行排序,并在创建索引时考虑字段的使用频率和...

    基于微信小程序的辅助教学平台设计 (源码 + 说明文档 + 演示视频)

    它基于JavaScript,结合WXML(WeiXin Markup Language)和WXSS(WeiXin Style Sheets)进行界面布局和样式定义,实现数据与视图的双向绑定。 2. 微信小程序的开发流程包括注册、开发、调试、发布等步骤,其中开发...

    C#开发经验技巧宝典

    0865 提高SQL性能加快执行速度 513 0866 控制批处理内语句的执行 513 0867 执行查询但是显示列信息 514 0868 获取连接或试图连接的次数 514 0869 获取当前数据库的语言名 514 19.5 时间与谓词 514 0870...

    OpenMRLDoc

    7. **StdAfx.cpp**:预编译头文件,用于包含标准库和项目特定的预编译头文件,以加快编译速度。通常包含`#include "stdafx.h"`,该头文件包含经常使用的库和宏定义。 8. **OpenMRUDoc.dsp**:这是早期版本的Visual ...

    关于如何优化SQL数据库的性能的几点分析 (1).pdf

    然而,过多使用视图可能会影响查询性能,特别是当视图数据是频繁变动的,这就需要在视图的使用与数据库性能之间找到一个平衡点。 最后,SQL语句优化理论是指导我们如何编写高效SQL语句的理论基础。它包括理解数据库...

    基于ssm+vue电脑公司财务管理系统.zip

    5. 移动审批:通过微信小程序实现财务审批流程,加快业务处理速度。 6. 数据统计与分析:提供图形化的数据分析工具,帮助管理层快速理解财务状况,做出决策。 综上所述,基于SSM+Vue的电脑公司财务管理系统结合了...

    php实现学生选课系统选课系统

    2. 快速开发:ThinkPHP的命令行工具可以自动生成模型、控制器和视图文件,大大加快了开发速度。 3. 配置管理:通过配置文件,开发者可以轻松调整系统设置,如数据库连接、URL模式等。 三、MySQL数据库 MySQL是一种...

    基于MVC设计的学生管理系统的实现

    3. 第三阶段(4月至5月中旬):设计并实现模型、视图和控制器的接口,编写核心代码,建立数据库连接,实现数据存储和检索。 4. 第四阶段(5月中旬至6月初):进行系统集成和测试,确保各个模块协同工作,修复可能...

Global site tag (gtag.js) - Google Analytics