`
javaidc
  • 浏览: 13462 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

sql语句优化原则

阅读更多
1.多where,少having
where用来过滤行,having用来过滤组

2.多union all,少union
union删除了重复的行,因此花费了一些时间

3.多Exists,少in
Exists只检查存在性,性能比in强很多,有些朋友不会用Exists,就举个例子
例,想要得到有电话号码的人的基本信息,table2有冗余信息
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);

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条,那效率是一样的

7.能用一句sql,千万别用2句sql
不解释
分享到:
评论

相关推荐

    SQL语句优化原则.pdf

    SQL语句优化原则.pdf

    SQL语句优化原则

    SQL查询条件优化30条原则 SQL查询是系统开发中的一个极重要的方面,做好SQL查询的优化是非常必要的,它直接影响系统的运行效率

    优化数据库的思想及SQL语句优化的原则

    优化数据库的思想及SQL语句优化的原则优化数据库的思想及SQL语句优化的原则

    JAVA-SQL语句优化.doc

    在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句的编写等体会不出SQL语句各种写法的性能优劣,但是如果将...在编写SQL语句时我们应清楚优化器根据何种原则来使 用索引,这有助于写出高性能的SQL语句。

    SQL语句的优化及SQL 性能调整原则

    SQL 编写注意事项 SQL语句的编写原则

    SQL语句优化的原则

    1、使用索引来更快地遍历表。 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引 下,数据在物理上随机存放在数据页上。合理的索引设计要建立在 对各种查询的分析和预测上。...

    SQL语句优化

    优化数据库、SQL语句优化的原则、不要以为只有SELECT语句是查询。实际上,带有任何WHERE条件的 DML(INSERT、UPDATE、DELETE)语句中都包含查询要求,在后面的文章中,当说到查询时,不一定只是指SELECT语句,也有可能...

    优化数据库的方法及SQL语句优化的原则

    优化数据库的方法:  1、关键字段建立索引。  2、使用存储过程,它使SQL变得更加... 4、SQL语句语法的优化。(可以用Sybase的SQL Expert,可惜我没找到unexpired的序列号)  5、清理删除日志。 ...........

    Oracle高效SQL语句原则

    Oracle高效SQL语句原则,优化SQL,给程序提速。

    SQL 优化常用原则

    SQL语句 优化常用原则。 1. 选用适合的ORACLE优化器

    SQL 优化原则

    (转)SQL 优化原则 一、问题的提出  在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中...

    oracle+sql+优化原则

    讲述oracle中SQL语句的优化原则,非常详细。

    SQL语句优化2

    开-闭原则(OCP):一个软件实体应当对扩展开放,对修改关闭。 里氏代换原则(LSP):一个软件实体如果使用的是一个基类的话,那么一定适用于其子类。 依赖倒转原则(DIP):要依赖于抽象,不要依赖于具体。 接口隔离...

    关于SQL,优化,查询,详细的讲解

    这是一套关于SQL语句性能调整原则,SQL语句和存储过程,Oracle SQL精妙SQL语句讲解,感觉还不错

    sql语句性能调整原则

    sql工具书,能对数据库进行更好的优化,大概的一般标准原则

    mysql数据库sql优化原则(经验总结)

    在构造SQL语句的时候要养成良好的习惯。二、原则总结 原则1、仅列出需要查询的字段,这对速度不会明显的影响,主要是考虑节省应用程序服务器的内存。 原来语句: select * from admin 优化为: select admin_id,...

    Oracle 性能优化之 SQL优化

    sql和oracle语句构建原则及优化,提高代码和机器执行效率。

    sql优化脚本

    sql代码性能优化,优化原则,程序sql语句优化,高性能sql优化

Global site tag (gtag.js) - Google Analytics