前两天的业务需求里需要关联好几张表出一个详单报表,这个需求其实很简单,但是数据量大,源表又不是分区表,就变得很头疼了。
最初我的代码大概是这样子的:
select
a.id,
a.name,
a.code,
b.type,
(
select p_name
from C c
where c.pid = b.pid
)
from A a, B b
where a.id = b.id and a.id > 1000;
这样的话如果三个表数据量小就没事儿了,一会儿就跑出来了。但是我们的A表上亿,A一个id对应B里的好多个id,那么B的数据量就更大了。C也差不多,这样一来就要老命了。这个时候我想到了用with这个办法来减小数据量。
WITH这个东西主要是产生一个临时的表,可以通过各种条件见小数据量,挑选需要的列,如此这般,数据量就会小很多。WITH没有办法提高效率,但是就是降低数据量,靠硬件的优势。修改以后的代码如下:
with AA as (select id, name, code, type from A where id > 1000),
BB as (select type, pid from B),
CC as (select p_name, pid from C)
select AA.id, AA.name, AA.code, BB.type, C.p_name
where AA.id = BB.id
and CC.pid = BB.pid;
经过业务上跑了一遍,原本13个小时没有跑出来的过程,居然很快的跑出来了,我很欣慰。就在这里记录一下这个知识点,和大家分享。
分享到:
相关推荐
此外,合理使用查询提示(Query Hint)也是提高SQL Server查询效率的常用技术手段。例如,使用FORCE ORDER提示可以强制优化器按照指定的表连接顺序生成执行计划。 总之,SQL Server查询性能的分析和优化是一个涉及...
21. **批量插入数据**:当需要大量插入数据时,采用批量插入的方式可以显著提高效率。 22. **优化删除操作**:在删除大量数据时,应避免一次性删除过多数据,可以考虑分批删除。 23. **合理使用存储过程**:存储...
数据库查询效率的关键是索引的使用,索引可以大大提高查询速度。在where和order by子句中涉及的列上建立索引,可以减少查询时间,提高查询效率。 2. 避免在where子句中对字段进行null值判断,否则将导致引擎放弃...
对于需重复查询的sql语句,可巧用with as 对sql语句进行精简,提高查询效率
- **改进措施**:可以考虑使用全文检索技术来提高这类查询的效率。 **6. 参数化查询的影响** - **常见误区**:在WHERE子句中使用参数(如 `@num`)可能会导致全表扫描,因为SQL在编译时无法确定参数的具体值。 - **...
### 处理百万级以上的数据查询提高效率的办法 在处理大量数据时,SQL查询的性能优化至关重要。本文将从多个方面介绍如何优化SQL查询,从而提高处理百万级以上数据的效率。 #### 1. 使用 `WHERE` 子句时避免使用 `!...
WITH子句可以极大地简化复杂的查询语句,并提高执行效率。当查询涉及到大量的嵌套或重复代码时,使用WITH子句可以显著提升可读性和可维护性。 ##### 3. Oracle 10.2.0.3版本 Oracle 10g(10.2)是Oracle公司推出的...
7. **避免使用参数化查询**:在`WHERE`子句中直接使用参数可能导致全表扫描,可以考虑使用索引提示(`WITH (INDEX)`)来指定查询应使用的索引。 8. **避免表达式和函数操作**:在`WHERE`子句中直接对字段进行除法、...
20. **存储过程**:合理使用存储过程,可以预先编译并缓存执行计划,提高执行效率。 通过上述策略,可以有效地优化SQL查询,提高数据库系统的整体性能。在实践中,应结合具体环境和业务需求,综合运用这些方法,...
"Laravel开发-with-join"这个包就是为了帮助开发者更方便地处理这种情况,特别是将belongsto关系的子查询转换为左连接查询,从而提高查询效率和代码可读性。 在SQL查询中,JOIN操作用于合并两个或更多表中的数据,...
- **性能优化**:在某些情况下,使用CTE可以避免多次执行相同的子查询,从而提高查询效率。 - **递归查询**:CTE支持递归查询,这对于处理层次结构数据非常有用。 #### 二、语法结构 `WITH...AS`的基本语法如下...
起初,我们假设只需对GROUP BY所涉及的字段建立索引即可提高查询效率。因此,我们尝试了以下SQL语句: ```sql SELECT device_id, product_id, COUNT(*) FROM packet_buy_report GROUP BY device_id, product_id; ``...
PLSQL Developer是一款强大的Oracle数据库开发工具,通过一...通过以上设置,PLSQL Developer将更加符合个人工作需求,提升开发和查询的效率。记住,个性化设置是提高生产力的关键,不断调整以找到最适合自己的工作流。
4. **数据预处理**:可以在CTE中对数据进行预处理,然后再进行后续的复杂操作,提高效率。 #### 示例分析 下面通过一个具体的例子来说明如何使用`WITH AS`。 假设有一个`Person`表,其中包含`StateProvince`表和`...
本文将深入探讨如何通过递归查询来解决这类问题,并着重讲解使用`WITH`语句来实现递归查询的方法,适用于多种数据库系统,如MySQL、PostgreSQL、SQL Server等。 一、理解递归查询 递归查询是一种在数据库中遍历层级...
Java try-with-resource语法使用解析 在Java编程中,资源的关闭是一件非常重要的事情。...try-with-resource语法糖可以使代码变得更加简洁,提高开发效率。同时,它也可以避免资源泄露,提高程序的稳定性。
在Visual Basic (VB)编程语言中,`With`...综上所述,`With`语句块是VB中提高代码效率和可读性的重要工具,熟练掌握它的使用能够使你的VB编程更加高效。在实际开发中,应根据需求灵活运用,以实现简洁、易读的代码。
在这个场景下,"使用JOIN提高SQL查询性能"的主题将深入探讨如何结合WITH子句和JOIN操作来改善查询效率。 1. JOIN类型: SQL支持多种JOIN类型,包括INNER JOIN(内连接),LEFT JOIN(左连接),RIGHT JOIN(右连接...
- **应用场景**:对于需要处理多个单元格或数据集的操作,使用数组可以显著提高效率。 - **示例**: ```vba Dim arr() As Variant arr = Range("A1:A1000").Value For i = LBound(arr) To UBound(arr) arr(i,...