SELECT SUM(VALUE) VALUE,
CONVERT(VARCHAR(2), DATE_TIME, 108) DAY
FROM ED_ELECTRICITY_ENERGY_HOUR
WHERE ITEM_NAME IN (SELECT EMS_UNIT.CODE || '_' || EMS_COLLECTOR.CODE || '_' ||
EMS_ITEM.CODE
FROM EMS_ITEM
JOIN EMS_COLLECTOR
ON EMS_COLLECTOR.ID = EMS_ITEM.COLLECTOR
JOIN EMS_UNIT
ON EMS_UNIT.ID = EMS_COLLECTOR.UNIT
WHERE EMS_ITEM.ITEM_TYPE = 14
AND EMS_ITEM.SORT_AREA > 0
AND EMS_UNIT.CODE = '110101A003')
AND DATE_TIME LIKE '2013-02-27%'
GROUP BY CONVERT(VARCHAR(2), DATE_TIME, 108)
ORDER BY CONVERT(VARCHAR(2), DATE_TIME, 108);
需求分析:
1. 对ED_ELECTRICITY_ENERGY_HOUR表中Value列求和
2. 获取对ED_ELECTRICITY_ENERGY_HOUR表中Value列求和DATE_TIME的日期中的日,并根据该列分组和升序排序
3. 数据范围:
a. EMS_UNIT.CODE,EMS_COLLECTOR.CODE,EMS_ITEM.CODE三列与ED_ELECTRICITY_ENERGY_HOUR.ITEM_NAME相等
b. 指定EMS_UNIT.CODE(110101A003)
c. 指定EMS_ITEM.ITEM_TYPE(14)
d. EMS_ITEM.SORT_AREA必须大于0
e. ED_ELECTRICITY_ENERGY_HOUR.DATE_TIME为指定日期(2013-02-27)
解决方案:
1. ED_ELECTRICITY_ENERGY_HOUR.ITEM_NAME采用IN还是EXISTS
a. 当EMS_ITEM、EMS_COLLECTOR、EMS_UNIT三表关联结果集数据量很小(百行以内),优化提升性能空间不大
b. 当以上三表关联结果很大,上千过万,可以考虑直接与ED_ELECTRICITY_ENERGY_HOUR表四表关联,表顺序根据数据量由大到小
c. 由于ED_ELECTRICITY_ENERGY_HOUR.ITEM_NAME一列需要与不同表的多个列匹配,采用EXISTS的结果:四表关联>EXISTS>IN,个人建议还是表关联最好
d. 避免使用SubStr截取函数,这影响索引的使用
2. 对ED_ELECTRICITY_ENERGY_HOUR.DATE_TIME的限制建议改为BETWEEN.AND,LIKE不会走索引,不解释
3. 可以考虑将DAY一列做以下修改:
CONVERT(VARCHAR(2), DATE_TIME, 108) => SUBSTR('2013-02-27',9,10)
这样做可以避免在DATE_TIME一列使用函数,提高性能,若DATE_TIME一列建有索引可以正常命中
以上观点如果有误,请指点!
相关推荐
第1章 全局在胸——用工具对SQL整体优化 1 1.1 都有哪些性能工具 1 1.1.1 不同调优场景分析 2 1.1.2 不同场景对应工具 2 1.2 整体性能工具的要点 4 1.2.1 五大性能报告的获取 5 1.2.2 五大报告关注的要点 10 ...
### SQL优化经验大全 在数据库管理和开发过程中,SQL查询优化是一项至关重要的技能。良好的SQL查询不仅可以提高系统的响应速度,还能显著降低系统资源消耗。本文将详细介绍30多条SQL优化的经验,帮助您更好地理解和...
从提供的文件内容来看,知识点主要围绕Oracle数据库的SQL性能优化进行展开。下面将详细说明标题和描述中提及的知识点: 1. SQL性能优化专题 - 这一部分是整个分享的主题,强调了性能优化在SQL编程中的重要性。性能...
DB2中的SQL优化是一个持续的过程,涉及到多个方面的考量和技术的应用。通过对SQL语句进行细致的分析和调整,可以有效地提高数据库性能,确保系统的稳定运行。此外,定期维护和监控也是保持数据库高效运行的重要手段...
首先,我们来看看"数据库面试题索引sql优化.pdf"可能涵盖的内容。 1. **SQL基础与语法**:面试通常会涉及到SQL的基本概念,如SELECT语句、JOIN操作、子查询、聚合函数(COUNT、SUM、AVG等)、WHERE和HAVING子句的...
在这个压缩包中,包含的文件`sqldx.sql`、`sqlhc.sql`和`sqlhcxec.sql`都是与SQL优化相关的脚本。 首先,我们来看`sqlhc.sql`,这是SQL Health Check的主要脚本,它会执行一系列的检查,分析数据库中的SQL语句,...
总结起来,SQL优化是一项系统工程,涉及SQL语句编写、执行计划分析、索引设计等多个方面。程序员需要深入理解这些基础知识,以便在实际工作中有效提升数据库的执行效率,降低系统的响应时间,从而提供更好的用户体验...
**题目1:** 给定一张表`table1`有两个字段`FID`,`Fno`,编写一个SQL语句来列出该表中一个`FID`对应多个不同的`Fno`的记录。 **解答:** ```sql SELECT * FROM table1 WHERE FID IN ( SELECT FID FROM table1 ...
以下是从标题“sqlserver2000优化(必须的)”和描述“sqlserver2000优化必看”中提取的关键知识点,这些知识点对于SQL Server 2000的高效运行至关重要。 ### 1. SQL Server 2000优化的重要性 SQL Server 2000作为...
第1章 全局在胸——用工具对SQL整体优化 1 1.1 都有哪些性能工具 1 1.1.1 不同调优场景分析 2 1.1.2 不同场景对应工具 2 1.2 整体性能工具的要点 4 1.2.1 五大性能报表的获取 5 1.2.2 五大报表关注的要点 10 ...
首先,让我们看看"Script 4-6 查找CPU最高消耗的10个语句.sql"这个脚本。这个脚本的目标是列出最近执行的SQL语句中,CPU消耗最大的前10个。通常,我们会利用数据库的性能监控工具或日志来获取这些信息。例如,在...
该产品针对数据库应用的开发和维护阶段提供了几个特别的模块:SQL语法优化器、PL/SQL集成化开发调试环境(IDE)、扫描器、数据库监视器等。图1 人工智能自动SQL优化示意图 其核心模块之一“SQL语法优化器”的工作原理...
系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL语句,提高系统的可用性...
在查看执行计划过程中如果有什么不明白的地方,可以点中“SQL信息按钮”,再在执行计划看不明白的地方点 击下,LECCO SQL Expert的上下文敏感帮助系统将提供执行计划该处的解释 <br> 优化模块的特点 <br> ...
本文将深入探讨SQL数据库的优化方法,包括网络优化、硬件优化、操作系统优化、数据库参数调整以及应用程序优化等几个核心方面。 首先,我们来看网络优化。网络是数据库系统中的重要组成部分,数据的传输速度直接...
SQL查询语句的性能优化与索引,写得还不错,可以看看了
在这个具体的案例中,我们看到一个SQL查询从原来的30分钟优化到了30秒,这是一个显著的改进。让我们详细探讨一下可能涉及的优化策略和知识点: 1. **查询结构分析**: - 首先,这个查询包含了多个表的JOIN操作,这...
首先,看是否用上了索引,对于该使用索引而没有用上索引的 SQL 语句,应该想办法用上索引。 其次,看是否用上正确的索引了,特别复杂的 SQL 语句,当其中 where 子句包含多个带有索引的字段时,更应该注意索引...
EffectiveMySQL之SQL语句最优化,非常不错的SQL优化文档,非常值得初学者看。