sql优化学习(一)
找到一套好的sql优化视频,地址如下:
http://www.ppvke.com/10355.html
p.s. 我在百度搜索半天都是些乱七八糟的东西,我用google搜索后,立刻就发现上面的视频地址,看了一些后,发现蛮有收获的,跟大家分享。
视频一共十五周,前四周的内容,听完了,也没做练习,权当听故事。从第五周的开始,我发现需要认真听,认真练习。如果时间不充裕,从第五周开始学习也可以。(个人意见)
1 select aaa,bbb from ccc where ddd=fff; 2 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,可以避免全表扫描,提高查询效率。
这篇就写到这里,不会的太多,坚持学习,加油!
转载于:https://www.cnblogs.com/lihao007/p/6876080.html
sql优化学习(一)相关推荐
- 【搬家】【数据库】【优化】SQL 优化学习小结——索引和语句优化
本文最早于 2013年10月17日于本人个人博客(http://mooowooo.tk)发表,现博客搬家至此,转载请注明出处. SQL 语句的优化对于每个与数据库打交道的程序员来说都是必不可少的一课, ...
- 基于Oracle的SQL优化--学习(九)
Oracle里的Cursor和绑定变量 Oracle里的Cursor Oracle数据库中的Cursor分为两种类型:一种是Shared Cursor:另一种是Session Cursor. Orac ...
- 深入学习MySQL、SQL优化、集群搭建
个人博客欢迎访问 总结不易,如果对你有帮助,请点赞关注支持一下 微信搜索程序dunk,关注公众号,获取博客源码 日拱一卒,不期速成,厚积薄发 序号 内容 1 Java基础面试题 2 JVM面试题 3 ...
- 学习笔记之-MySql高级之sql优化
一 Mysql简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. M/SQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据 ...
- mysql性能优化学习_mysql学习——性能优化之sql优化
尽量少 join MySQL 的优势在于简单,但这在某些方面其实也是其劣势.MySQL 优化器效率高,但是由于其统计信息的量有限,优化器工作过程出现偏差的可能性也就更多.对于复杂的多表 Join,一方 ...
- 史上最全SQL优化方案(二)
接上篇!! 4 基础优化 a 优化思路 定位问题点吮吸:硬件–>系统–>应用–>数据库–>架构(高可用.读写分离.分库分表). 处理方向:明确优化目标.性能和安全的折中.防患未 ...
- 中秋节,送上一次非常有趣的SQL优化实战经历
点击上方"搜云库技术团队",选择"设为星标" 回复"1024"或"面试题"获取4T学习资料 补充:看到好多朋友后台留言说 ...
- 数据库 SQL 优化大总结之:百万级数据库优化方案
网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 这篇文章我花费了大量的时间查找资料.修改.排版,希望大家阅读之后,感觉 ...
- SQL优化|Java面试题
看到一篇非常全面的SQL优化文章,在开发的工作中往往不考虑性能上的缺失(在一开始的时候数据量不大也看不出速度上的区别).但写的越多越应该规范一下写法. 原文链接:http://www.jfox.inf ...
最新文章
- 世界机器人领域12个前沿技术趋势
- 希尔排序c语言,希尔排序(C/C++实现)
- python语法基础及if、while、for等语句介绍
- vuecli3 引入全局scss变量_在vue-cli 3中给stylus、sass样式传入共享的全局变量
- MMORPG大型游戏设计与开发(part3 of net)
- 开源项目葫芦藤:IdentityServer4的实现及其运用
- Lost Cows(树状数组)
- python 各种排序
- 通过channel进行goroutine间的通信
- CentOS6.5升级内核
- javascript 轮播图(缓存效果)详细篇
- Win7系统屏保也可以当桌面壁纸
- 大数据分析-实验八 鸢尾花数据集分类
- 免下载券下载文档的方法
- 摄像头参数介绍 ———— 视场角(FOV)
- oracle imp 多用户,用imp把一个用户的架构下的数据导入到另一个用户下的问题
- 干货丨如何优雅地设计并控制一台协作机械臂
- 【生活】换手机号需要更改哪些绑定
- python:series详解和数据获取
- Android 窗口结构(一) 窗口层级构造
热门文章
- android 自定义表情包,android基于环信的聊天和表情自定义
- python如何画出多个独立的图片_python实现在一个画布上画多个子图
- html高度随宽度编号,纯css实现容器高度随宽度等比例变化的四种解决方案
- 检测网络是否稳定的计算机命令,如何查看自己的网络是否稳定
- mysql数据库事务命令_MySql学习18----数据库事务---命令使用(02)
- python中字典的value可以为任意对象_Python学习之字典的删改查操作
- 如何升级成鸿蒙,如何将自己的华为手机升级成鸿蒙系统
- rocketmq删除topic_RocketMq 快速入门教程
- 一个黑色全屏的计时器_我入手了一个1000多的智能手环,值吗?|Fitbit Charge 4测评...
- java中Arrays类和Math类常用API简介