`
2277259257
  • 浏览: 520099 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SQL语句优化

 
阅读更多

1.多where,少having

where用来过滤行,having用来过滤组
 
聚合语句:统计分组数据时用,对分组数据再次判断时用having
HAVING子句可以让我们筛选成组后的各组数据.; Y( }; X, \5 m1 O
HAVING子句在聚合后对组记录进行筛选
而WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前
Sql代码
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000
 
 
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。/
 
优先级:where > 聚合语句 > having
2.多union all,少union
union删除了重复的行,因此花费了一些时间
union只是将两个结果联结起来一起显示(消除了重复行),并不是联结两个表
UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。
 
3.多Exists,少in
Exists只检查存在性,性能比in强很多,not in 不推荐使用,因为不能应用表的索引,推荐not exists,尽量用exists 代替distinct
有些朋友不会用Exists,就举个例子
例,想要得到有电话号码的人的基本信息,table2有冗余信息
Sql代码
select * from table1;--(id,name,age)
select * from table2;--(id,phone)
in:
select * from table1 t1 where t1.id in (select t2.id from table2 t2 where t1.id=t2.id);
Exists:
select * from table1 t1 where Exists (select 1 from table2 t2 where t1.id=t2.id);
 
 
用in的朋友注意了,当参数超过1000个,数据库就挂了。(oracle 10g数据库)
 
4.使用绑定变量
Oracle数据库软件会缓存已经执行的sql语句,复用该语句可以减少执行时间。
复用是有条件的,sql语句必须相同
问:怎样算不同?
答:随便什么不同都算不同,不管什么空格啊,大小写什么的,都是不同的
想要复用语句,建议使用PreparedStatement
将语句写成如下形式:
insert into XXX(pk_id,column1) values(?,?);
update XXX set column1=? where pk_id=?;
delete from XXX where pk_id=?;
select pk_id,column1 from XXX where pk_id=?;
 
5.少用*
因为要把*解析为列名,这时就查询数据字典,自然就耗费了许多时间。
很多朋友很喜欢用*,比如:select * from XXX;
一般来说,并不需要所有的数据,只需要一些,有的仅仅需要1个2个,
拿5W的数据量,10个属性来测试:
(这里的时间指的是PL/SQL Developer显示所有数据的时间)
使用select * from XXX;平均需要20秒,
使用select column1,column2 from XXX;平均需要12秒
(我的机子不是很好。。。)
对于开发来说,这一条是个灾难,知道是一回事,做就是另一回事了
 
6.分页sql
一般的分页sql如下所示:
sql1:select * from (select t.*,rownum rn from XXX t)where rn>0 and rn <10;
sql2:select * from (select t.*,rownum rn from XXX t where rownum <10)where rn>0;
乍看一下没什么区别,实际上区别很大...125万条数据测试,
sql1平均需要1.25秒(咋这么准呢? )
sql2平均需要... 0.07秒
原因在于,子查询中,sql2排除了10以外的所有数据
当然了,如果查询最后10条,那效率是一样的 如果有分页需要排序,必须再包一层,结果为
select * from (select t.*, rownum rn from (select * from XXX order by value desc) t where rownum <= 10 ) where rn > 0;
 
(oracle数据库)
 
7.能用一句sql,千万别用2句sql
分享到:
评论

相关推荐

    新一代智能SQL语句优化技术

    新一代智能SQL语句优化技术是数据库管理领域的重要进步,它主要针对的是提升数据库应用程序的性能。SQL(结构化查询语言)作为访问和更新数据的主要工具,其性能优化对于整体系统效率有着重大影响。通常,SQL语句...

    非常好用的SQL语句优化34条+sql语句基础

    在SQL编程领域,掌握高效的SQL语句优化技巧和基础知识是至关重要的。以下是对"非常好用的SQL语句优化34条+sql语句基础"这一主题的详细解析: 1. **索引优化**:索引是提高查询速度的关键。创建合适的索引(主键、...

    SQL语句优化方法30例

    SQL 语句优化方法 30 例 SQL 语句优化是一种非常重要的数据库优化技术,目的是为了提高数据库的查询效率,减少查询时间,提高系统的整体性能。在 SQL 语句优化过程中,我们经常会用到 hint,今天我们将总结一下在 ...

    sql语句优化原则

    SQL语句优化原则是数据库管理和应用开发中的关键环节,它涉及到如何提高查询效率,减少资源消耗,提升系统整体性能。以下是一些针对SQL语句优化的重要原则和方法: 1. **利用索引**:索引是提高查询速度的关键。...

    sql语句优化之降龙十八掌

    在数据库管理中,SQL语句优化是提升系统性能的关键步骤,尤其对于大型系统而言,一个高效的SQL查询可以显著减少响应时间,改善用户体验。本文将详细阐述"sql语句优化之降龙十八掌",逐一解析这十八个优化技巧,帮助...

    SQL语句优化手册

    ### SQL语句优化手册 #### 一、引言 随着信息技术的发展,数据库系统在各行业中扮演着越来越重要的角色。为了确保数据库系统能够高效地运行,SQL语句优化成为了提升系统性能的关键因素之一。SQL(Structured Query...

    sql语句优化建议

    ### SQL语句优化建议 #### 重要性与挑战 SQL语句优化是数据库管理与维护中的关键环节,尤其在处理大规模数据集时显得至关重要。优化不仅能够显著提升查询效率,减少资源消耗,还能改善用户体验,确保系统的稳定性...

    Sql语句优化(很好的资料)

    SQL语句优化是提高软件系统效率的关键技术,尤其是在大数据量的场景下,高效的SQL能够显著提升数据库查询速度,降低系统资源消耗。以下是一些关于SQL优化的重要知识点: 1. **IN操作符**: - 使用IN操作符虽然使得...

    oracle性能优化之SQL语句优化

    SQL语句优化是性能优化的关键环节,因为它直接影响到数据的检索速度和资源的消耗。本文将深入探讨SQL语句优化,包括优化器的工作原理、优化工具、数据访问方法以及如何收集统计信息来辅助优化。 首先,Oracle的优化...

    sql语句优化心得

    ### SQL语句优化心得 #### 引言 在软件开发过程中,SQL语句的编写往往直接关系到应用程序的性能表现。特别是在系统初期阶段,由于数据量较小,即使编写了一些效率较低的SQL语句,也可能不会立即暴露出来。然而,...

    SQL语句优化,语法优化

    SQL语句优化是数据库性能提升的关键环节,尤其是在大数据量的环境下。优化SQL语句能够显著提高查询速度,减少服务器负载,提升系统整体效率。以下是一些关于SQL语句优化的重要知识点: 1. **选择最有效的表名顺序**...

    必须掌握的30种SQL语句优化

    便于Java入门人员交流学习。可以深刻理解该语言的常用API。帮助初学者尽快入门。

    SQL语句优化规则

    SQL语句优化是数据库管理中的关键环节,尤其是在大型企业级应用中,高效的SQL查询能够显著提升系统的整体性能。本文将详细探讨几个重要的SQL优化规则,这些规则主要针对Oracle数据库系统。 1. **选用适合的ORACLE...

    SQL Server数据库sql 语句优化

    sql 语句优化 SQL Server数据库查询速度慢的原因有很多

    sql语句优化

    SQL语句优化是数据库性能调优的关键环节,对于任何开发人员来说都至关重要。优化SQL语句可以显著提高数据库查询效率,降低系统资源消耗,提升应用的整体性能。以下是一些关于SQL语句优化的重要知识点: 1. **共享...

    一般SQL语句优化整理

    ### 一般SQL语句优化整理 #### 概述 在数据库操作中,SQL查询语句是数据检索的核心,其性能直接影响到应用系统的响应时间和资源消耗。对于一般的SQL语句优化,不仅能够提升查询效率,还能改善用户体验。本文将对...

    JAVA-SQL语句优化.doc

    总之,SQL语句优化是提升数据库性能的关键。了解并遵循上述原则,可以编写出更加高效的SQL,从而提高系统整体的响应速度和可用性。在实际开发中,应不断学习和实践,以适应不同场景下的性能需求。

    sql语句优化技术分析

    SQL语句优化是数据库管理中的核心技能之一,它关乎到系统的性能、响应时间和资源利用率。在处理大量数据时,有效的SQL优化策略能显著提升数据库应用的效率。以下是对SQL语句优化技术的详细分析: 一、理解执行计划 ...

    SQL语句优化,编写搞笑的sql语句

    SQL语句优化是数据库管理中的关键技能,尤其是在Oracle系统中,高效的SQL能够显著提升系统性能。优化SQL的主要目标是减少查询时间和资源消耗。这通常涉及到合理利用索引,索引是一种特殊的数据库对象,用于加速数据...

Global site tag (gtag.js) - Google Analytics