对于汇总类型的分析报表,在报表生成时往往需要进行分组聚集运算,如果在数据库中先进行一次分组聚集,能够大大减少取到报表服务器的记录数,加快取数和报表运算的速度。
看如下报表:
这是一个典型的交叉分组报表,其sql有两种写法:
第一种:select 产品,客户,销量 from 购买记录表
第二种:select产品,客户,sum(销量) from 购买记录表 group by 产品,客户
而报表的做法都一样,如下图所示:
分析:
采用第一种做法,不仅仅取到报表服务器上记录数多了,取数速度慢,而且在报表端对购买记录表进行分组运算的时候速度也慢了;
采用第二种做法,数据库虽然要进行分组运算,但是数据库中有索引,运算速度快,且取到报表服务器端的记录数大大减少,取数速度大大加快,因此在报表端进行分组运算的时候只要对很少的记录数进行,报表的运算速度大大加快了。
分享到:
相关推荐
我觉得这个是重点,因为只有明白了这些SQL Server操作和管理的最佳实践准则,才能在设计数据库和编写T-SQL脚本时,尽量按照这些Rules来操作,提高SQL Server和应用程序的性能和效率。 其实所有的Rules都在这里...
例如耽搁查询 的排序、连接、扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理。但是更新操作UPDATE,INSERT, DELETE还不能并行处理。 ...
6.5.1 在cREATETABLE语句中定义DEFAULT约束 6.5.2 在已存在的表中添加DEFAUIT约束 6.6 禁用约束 6.6.1 在创建约束时忽略无效的数据 6.6.2 临时禁用已存在的约束 6.7 规则和默认值 6.7.1 规则 6.7.2 默认值 6.7.3 ...
Robert目前是俄勒冈州波兰特市的Huron Consuiting Group的Stockarnp事务所的DBA团队领导人,偶尔也会在数据库开发、商业智能和其他主题方面发表演讲。 其他责任者简介: 杨大川,毕业于美国纽约州立大学布法罗分校...
2.7 SQL语句的编写规范 数据库中存储过程和触发器中涉及大量的SQL语句,对SQL语句的编写规范如下: 关键字大写:在SQL语句的编写中,凡是SQL语句的关键字一律大写,如:SELECT、ORDER BY、 GROUP BY、 FROM、WHERE、...
(3)解析器/分析器:分析器的工作主要是对要执行的 SQL 语句进行词法解析、语法解析,最终得到抽象语法树,然后再使用预处理器对抽象语法树进行语义校验,判断抽象语法树中的表是否存在,如果存在的话,在接着判断 ...
在FROM后面的表中的列表顺序会对SQL执行性能影响,在没有索引及ORACLE没有对表进行统计分析的情况下ORACLE会按表出现的顺序进行链接,由此因为表的顺序不对会产生十分耗服务器资源的数据交叉。(注:如果对表进行...
1.工作中常用sql排行 ①group by(用来聚合也时常用来去重注意用groupby select 后要跟聚合字段) ②where(SQL计算之前进行过滤,对性能是极大的提高,代码测试阶段where条件下尽量跟分区) ③having(SQL计算之后进行过滤...
Robert目前是俄勒冈州波兰特市的Huron Consuiting Group的Stockarnp事务所的DBA团队领导人,偶尔也会在数据库开发、商业智能和其他主题方面发表演讲。 其他责任者简介: 杨大川,毕业于美国纽约州立大学布法罗分校...
1、在表中建立索引,优先考虑where、group by使用到的字段。 2、尽量避免使用select *,返回无用的字段会降低查询效率。如下: SELECT * FROM t 优化方式:使用具体的字段代替*,只返回使用到的字段。 3、尽量避免...
12样(12yang)团购系统是一套Groupon模式的开源团购程序,开发的一套网团购程序,系统采用ASP SQL开发的团购程序,安装超简,功能超全面,在保留12样团购系统版权的前提下,允许所有用户免费使用。12样团购系统内置...
SQL语句尽可能简单 保持事务(连接)短小 尽可能避免使用SP/TRIG/FUNC 尽量不用 SELECT * 改写OR语句 避免负向查询和% 前缀模糊查询 减少COUNT(*) LIMIT的高效分页 用UNION ALL 而非 UNION GROUP BY 去除排序 同数据...
12样(12yang)团购系统是一套Groupon模式的开源团购程序,开发的一套网团购程序,系统采用ASP+SQL开发的团购程序,安装超简,功能超全面,在保留12样团购系统版权的前提下,允许所有用户免费使用。12样团购系统内置...
在 SQL 查找中,我们可以使用函数来查找表中的所有员工。例如,下面是一个使用函数查找所有员工的示例代码: ```sql DELIMITER $$ DROP FUNCTION IF EXISTS serch_user; CREATE FUNCTION serch_user(dept_id INT) ...
扩展存储过程是SQL Server中的另一类存储过程,它是以其它语言编写的外部程序,是以动态链接库(DLL)形式存储在服务器上,最终SQLServer就可以动态加载并执行它们 编写好后使用SQLServer的固定角色sysadmin...
优化数据库的方法 1、关键字段建立索引。 2、使用存储过程,它使SQL变得更加灵活和高效。 3、备份数据库和清除...用户在表中每加进一个索引,维护索引集合就要做相应的更新工作。 2、IS NULL 与 IS NOT NULL 不能用nul
创建表时能使用数值型的尽量不用字符型,因为字符型比较需要逐个char进行比较,而数值型只需要比较...使用复合索引时应符合最佳左前缀规则,sql语句的执行顺序为from on where group by having select order by,例如s
所有数据来自 MySQL,在监控项较多的情况下,SQL 压力很容易导致 zabbix-web 直接无响应。同时,过多的图片也并不适合快速比对。对此,设计了 sort 插件。其作用是,对选定的 hostgroup 和 item 项,将所属的 host ...