找到一套好的sql优化视频,地址如下:

http://www.ppvke.com/10355.html

p.s. 我在百度搜索半天都是些乱七八糟的东西,我用google搜索后,立刻就发现上面的视频地址,看了一些后,发现蛮有收获的,跟大家分享。

视频一共十五周,前四周的内容,听完了,也没做练习,权当听故事。从第五周的开始,我发现需要认真听,认真练习。如果时间不充裕,从第五周开始学习也可以。(个人意见)

1. 绑定变量
 select aaa,bbb from ccc where ddd=fff;
select aaa,bbb from ccc where ddd=ggg;

每条语句都需要进行解析,这里有两条,需要解析2回,有N条,就需要解析N回。每次执行一条sql文,消耗的时间中,解析占了绝大的比例。

如果把fff 换成 :XXX (XXX可以随意填写) , 这样的话,就只进行一次解析。

2.脏读、幻读、不可重复读

具体的含义,我就不写了,别人讲的更清楚,我贴出地址:

http://blog.sina.com.cn/s/blog_8020e4110101bfc6.html

3.所有的优化都是从业务开始的

作为程序员,虽说成天处理代码,但是遇到问题,解决问题的出发点,要先从业务出发。

4.表分区

表分区,可以改善查询性能,方便数据管理,方便数据备份恢复。参考地址如下:

http://www.cnblogs.com/pengineer/p/4393988.html

我在练习oracle partition这个功能的时候,悲催的发现,oracle只有Enterprise edition这个版本中才paritition。。。

郁闷!暂时无法练习尝试了!

5.ROWID & ROWNUM

ROWNUM指的是表中的行数,第一行,第二行,.ect  而ROWID是在指明这条数据在磁盘中位置的物理地址。更详细的请参考如下链接:

http://www.dba-oracle.com/t_rownum_rowid_difference.htm

6.UNION & UNION ALL

两者都是合并结果集,不同在于,前者是去掉重复值,后者是不去掉重复值。

因为UNION在运行时,要去掉重复值,机制中,它会排序去重,所以花费的时间多,所以优化时可通过业务上分析,如果两个结果集不存在重复值,那么合并的时候就应该选择UNION ALL。这也是优化的一个案例。

7.COUNT

我相信有时需要查看这个表中,是否有数据,所以sql就会写成,select count(1) from table;

表中数据多时,这样就会造成时间的浪费,我们不需要知道有多少条数据,只要清楚里面是否有数据,所以sql优化成下面的这个样子:

select count(1) from table where rownum = 1;

这样,只检查第一条是否有就可以,第一条有,那么这表就有数据。

8.DISTINCT

去重功能,少用,因为去重,会产生排序,会消耗大量时间。

9.MAX & MIN

select max_class, min_class from
(select max(CLASS_ID) max_class from student),
(select min(CLASS_ID) min_class from student);

同时查询最大值和最小值时,写成如上sql,因为当查询最大值或最小值时,当有索引的前提下,执行计划不要要全表查询,逻辑读只需要两次就可以查到了。但是同时出现时,就会进行全表扫描,因此,写成上面的sql,可以避免全表扫描,提高查询效率。

这篇就写到这里,不会的太多,坚持学习,加油!

												

sql优化学习(一)的更多相关文章

  1. 《高性能SQL调优精要与案例解析》一书谈SQL调优(SQL TUNING或SQL优化)学习

    <高性能SQL调优精要与案例解析>一书上市发售以来,很多热心读者就该书内容及一些具体问题提出了疑问,因读者众多外加本人日常工作的繁忙 ,在这里就SQL调优学习进行讨论并对热点问题统一作答. ...

  2. sql优化方法学习和总结

    首先要问自己几个问题: 哪些类型的sql会散发出坏味道? sql优化的基本原理是什么,为什么有的sql快有的慢? sql优化和底层的存储引擎关系大么? 怎么看执行过程? 优化建议 1. 缓存查询,sq ...

  3. Mysql学习---视图/触发器/存储过程/函数/执行计划/sql优化 180101

    视图 视图: 视图是一个虚拟表(非真实存在),动态获取数据,仅仅能做查询操作 本质:[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.由 ...

  4. Oracle SQL优化进阶学习

    引言 对于下面的Oracle分页如何优化该段语句: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM task_log order by ...

  5. sql优化详细介绍学习笔记

    因为最近在面试,发现sql优化这个方面问的特别特别的多.之前都是零零星星,不够全面的了解一点,刚刚在网上查了一下,从 http://blog.csdn.net/zhushuai1221/article ...

  6. (转)SQL 优化原则

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

  7. sql优化建议

    背景:        在北京工作期间,我们做应用开发的和后台数据库的联系非常大,我们经常在一起讨论存储过程或者是sql性能优化的事情来降低应用运行时的时间,提高性能,经过和数据库方面的工程师的一些讨论 ...

  8. SQL索引学习-聚集索引

    这篇接着我们的索引学习系列,这次主要来分享一些有关聚集索引的问题.上一篇SQL索引学习-索引结构主要是从一些基础概念上给大家分享了我的理解,没有实例,有朋友就提到了聚集索引的问题,这里列出来一下: 其 ...

  9. SQL优化(zhuan)

    转自:http://www.jfox.info/SQL-you-hua 数据库的优化问题 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出S ...

随机推荐

  1. Java 统计字母个数

    原理: 将字符串转换成char字符数组 然后使用另一个数组存储 代码如下 public class CalChar { public static void main(String[] args) { ...

  2. 使用laravel搭建CURD后台页面

    配置即一切 一切皆于需求,后台从0开始搭建,但是写了一两个页面后发现太多的是对单表的增删改查操作,于是就想到了,能不能做一个快速搭建的后台.想到一句话,配置即一切.如果一个CURD后台能只进行配置就自 ...

  3. angular4-自定义组件

    在 Angular 中,我们可以使用 {{}} 插值语法实现数据绑定. 新建组件 $ ng generate component simple-form --inline-template --inl ...

  4. SpringMVC防止表单重复提交

    最近公司上线,有同志进行攻击,表当防重复提交也没有弄,交给我 ,本人以前也没弄过,知道大概的思路,但是那样实在是太麻烦了,虽然后面试过使用过滤器加拦截器实现,不过还是有点小麻烦. 后来在网上搜索后发现 ...

  5. [Leetcode 104]求二叉树的深度Depth of BinaryTree

    [题目] Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the ...

  6. B2C B2B C2C O2O模式的介绍

                    b2c:天猫 商家对客户                 c2c:淘宝 客户到客户(卖家也是阿里公司的客户)                 o2o:美团 线上花费,下 ...

  7. STA/LTA方法

    STA是用于捕捉地震信号的时间窗,因此STA越短,就对短周期的地震信号捕捉越有效:LTA是用于衡量时间窗内的平均噪声,STA/LTA就可以根据周围环境噪声程度自适应地调整其对于某一类型地震信号的敏感度 ...

  8. 单字段去重 distinct 返回其他多个字段

    select a.*, group_concat(distinct b.attribute_name) from sign_contract_info a left join sign_temp_at ...

  9. http协议相关

    HTTP请求方法 HTTP消息头 HTTP请求头 HTTP响应头 HTTP cookie机制和实现原理 HTTP请求方法 超文本传输协议(HTTP, HyperText Transfer Protoc ...

  10. Oracle远程登录命令

    sqlplus登陆方式 sqlplus有几种登陆方式 比如: 1.C: > sqlplus "/as sysdba" C: > sqlplus / as sysdba ...