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 ...
随机推荐
- Win10系列:VC++绘制几何图形5
打开D2DBasicAnimation.h头文件,并在D2DBasicAnimation类中添加如下的代码: private: //声明成员变量point D2D1_POINT_2F ...
- bzoj1261
题解: 看到了树 很明显就是树形dp吗 然后随便yy一下方程就好了 代码: #include<bits/stdc++.h> using namespace std; int n,j; ], ...
- dede织梦调取一二三级栏目名及栏目下的内容列表的方法
网站根据需要,把地区划成省-市-文章的层级结构,栏目首页需要显示的是 复制代码代码如下: {dede:channelarclist} <!--省显示--> <a href=" ...
- 《python》join、守护进程、锁/信号量/事件、进程队列
一.multiprocess.process模块 1.join方法 阻塞主进程,等待子进程执行完毕再放开阻塞 import time import random from multiprocessin ...
- iPhoneX && iOS11 适配
最近实在是蛮闲的,这都得益于苹果爸爸给力的审核,已经半个月了(委屈) 这个问题已经很久了,但是还是希望分享给各位,当然网上的教程的确很多: 1.automaticallyAdjustsScrollVi ...
- jdk8-Optional类
概念: package com.atguigu.java8; import java.util.Optional; import org.junit.Test; /* * 一.Optional 容器类 ...
- windows文件映射
0x01 使用文件映射实现共享内存. 用内存映射文件实现进程间的通讯:Windows中的内存映射文件的机制为我们高效地操作文件提供了一种途径,它允许我们在进程中保留一段内存区域,把硬盘或页文件上的目标 ...
- SharePoint REST API - REST请求导航的数据结构
博客地址:http://blog.csdn.net/FoxDave 从一个既定的URL获取其他SharePoint资源 当你用SharePoint REST服务进行开发的时候,你经常会从指定的一个 ...
- uiautomator2 获取APP Toast内容
前言:appium必须是1.6以上的版本 环境(安装和安装都可以运行成功,我也不确定要不要这个): 1.抓到toast需要安装uiautomator2,安装npm:npm install -g cnp ...
- leetcode第26题:删除排序数组的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 给定数组 ...