sql优化学习(一)
找到一套好的sql优化视频,地址如下:
http://www.ppvke.com/10355.html
p.s. 我在百度搜索半天都是些乱七八糟的东西,我用google搜索后,立刻就发现上面的视频地址,看了一些后,发现蛮有收获的,跟大家分享。
视频一共十五周,前四周的内容,听完了,也没做练习,权当听故事。从第五周的开始,我发现需要认真听,认真练习。如果时间不充裕,从第五周开始学习也可以。(个人意见)
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优化学习(一)的更多相关文章
- 《高性能SQL调优精要与案例解析》一书谈SQL调优(SQL TUNING或SQL优化)学习
<高性能SQL调优精要与案例解析>一书上市发售以来,很多热心读者就该书内容及一些具体问题提出了疑问,因读者众多外加本人日常工作的繁忙 ,在这里就SQL调优学习进行讨论并对热点问题统一作答. ...
- sql优化方法学习和总结
首先要问自己几个问题: 哪些类型的sql会散发出坏味道? sql优化的基本原理是什么,为什么有的sql快有的慢? sql优化和底层的存储引擎关系大么? 怎么看执行过程? 优化建议 1. 缓存查询,sq ...
- Mysql学习---视图/触发器/存储过程/函数/执行计划/sql优化 180101
视图 视图: 视图是一个虚拟表(非真实存在),动态获取数据,仅仅能做查询操作 本质:[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.由 ...
- Oracle SQL优化进阶学习
引言 对于下面的Oracle分页如何优化该段语句: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM task_log order by ...
- sql优化详细介绍学习笔记
因为最近在面试,发现sql优化这个方面问的特别特别的多.之前都是零零星星,不够全面的了解一点,刚刚在网上查了一下,从 http://blog.csdn.net/zhushuai1221/article ...
- (转)SQL 优化原则
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...
- sql优化建议
背景: 在北京工作期间,我们做应用开发的和后台数据库的联系非常大,我们经常在一起讨论存储过程或者是sql性能优化的事情来降低应用运行时的时间,提高性能,经过和数据库方面的工程师的一些讨论 ...
- SQL索引学习-聚集索引
这篇接着我们的索引学习系列,这次主要来分享一些有关聚集索引的问题.上一篇SQL索引学习-索引结构主要是从一些基础概念上给大家分享了我的理解,没有实例,有朋友就提到了聚集索引的问题,这里列出来一下: 其 ...
- SQL优化(zhuan)
转自:http://www.jfox.info/SQL-you-hua 数据库的优化问题 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出S ...
随机推荐
- learning ddr Electrical Characteristics and AC Timing
reference: JEDS79-3F.pdf , page:181
- nexus下载远程maven中央仓库的解决方案
参考:http://www.linuxidc.com/Linux/2014-03/98708.htm https://repo.maven.apache.org/maven2/.index/ 下载这两 ...
- 【原创】<Debug> not positioned on a valid record
[Problem] QSqlQuery::value: not positioned on a valid record QSqlQuery :: value:未定位在有效记录上 [Solution] ...
- day044 cssy其他样式 js初识
float: 浮动 .t1{ float: right/left; } 关于浮动的两个特点: 1.浮动的框可以向左或向右移动,知道他的外边缘碰到包括框或另一个浮动框的边框为止. 2.由于浮动框不在文档 ...
- SignalR NuGet程序包
最近公司有一个边看直播边聊天的需求,直播好搞,直接用腾讯的小直播,组装推流和播放地址,把推流地址拿出去就OK,只要一推流,就可以使用播放地址观看直播,看完后通过webclient去异步下载直播的视频到 ...
- window.location.replace()与window.location.href()区别
有3个页面 a,b,c 如果当前页面是c页面,并且c页面是这样跳转过来的:a->b->c 1:b->c 是通过window.location.replace("..xx/c ...
- Convert the AScii to SAC file
readtable *.txt w sac filename.sac ch delta dela0 w over
- Java 容器
摘录来至https://www.cnblogs.com/LipeiNet/p/5888513.html https://www.cnblogs.com/acm-bingzi/p/javaMap.htm ...
- 『转』credential Provider 简易改写攻略
本次小学期的题目是windows下的凭证改编.本人负责的是Win7 下的credentials Provider 的编写以及其他杂七杂八的工作.当然给我印象最深的就是credentials provi ...
- python分析nginx自定义日志
# -*- coding:utf-8 -*- import datetimeimport re logfile = '''192.168.23.43 - 2017-12-14:00:14:41 /se ...