以Oracle数据库举例:(a-G要求掌握,H一般为DBA操作,了解就可以了)

a。

建库:已知将保存海量数据的时候,因为Oracle是通过用户来管理数据的,

第一步我们先建一个tableaspace(假设表空间名为TEST),

然后建立用户TEST(一般情况下用户名和表空间同名),

建立的用户TEST使用已建立的tablespace(TEST).

这样做是避免访问上产生热点。

b。

建表:建表时最好依照第三范式去建表(请回答三个范式),

这样可以最大程度避免出现数据冗余、插入、删除和更新异常,保证数据完整性。

而且表结构合理的情况下,可以加快查询速度。

c。

索引:在经常查询的字段上面建立索引,

利用index对查询进行优化,(index可以避免对表的一个全面扫描)

原理:当以某个字段建立一个索引的时候,数据库就会生成一个索引页,

索引页不单如果表的列很少,不适合建索引.单保存索引的数据,还保存了索引在数据库的具体的物理地址,当我们查询数据时,oracle会先查索引页,这样就能够很快的定位查找到要找的记录)。

注意:

当执行过多次的insert,delete,update后,会出现索引碎片,影响查询速度,我们应该对索引进行重组.

D:

sql语句的优化:

多使用共享语句尽量使你的sql语句能够使用索引。

怎样使sql语句能够使用到索引呢:

当sql语句中包含not in,<>,is null,is not null,like '%%'的时候不会用索引。

IN: in会拆成一堆or的,可以使用表的索引。

NOT IN:强列推荐不使用,因为它不能应用表的索引。

<> 操作符(不等于): 不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。

优化方案:用其它相同功能的操作运算代替,如a<>0 改为 a>0 or a<0;a<>’’ 改为 a>’’.

IS NULL 或IS NOT NULL操作(判断字段是否为空):

判断字段是否为空一般是不会应用索引的,因为B树索引(oracle大多是使用B树索引)是不索引空值的。

优化方案:用其它相同功能的操作运算代替,如 a is not null 改为 a>0 或a>’’等。

is null 时,用一个缺省值代替空值,例如业扩申请中状态字段不允许为空,缺省为申请。

LIKE:LIKE操作符可以应用通配符查询,里面的通配符组合可能达到几乎是任意的查询,但是如果用得不好则会产生性能上的问题,

优化方案:如LIKE ‘%001%’ 这种查询不会引用索引,会产生全表扫描,

而LIKE ‘001%’则会引用范围索引。进行范围的查询,性能肯定大大提高。

E:

多表查询时,一般一个大表关联几个小表,最好不要几个大表相关联,那样也会影响到查询速度。

F:

oralce访问表中的数据共有三种方式,全表扫描,通过索引扫描,使用共享语句(一模一样)。

select id,name from tb_sutdent;

Select id,name from tb_sutdent;

我们JDBC查询中使用PreparedStatement实际上就是使用共享语句。

所以我们要多使用共享语句来加快查询速度。

G:

经常查询的SQL可以写成存储过程。

H:

当表数据达到几十到几百GB时,就要考虑对表进行分区了,

分区的优点:

1.增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用

2.维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;

3.均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能;

4.改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。

分区的几种方法:范围分区 ,Hash分区(散列分区) ,复合分区 。

应用:实际项目中大多使用范围分区,

例如按时间范围(日期字段)来分区,如2005-2006数据作为一个分区,2006-2007作为一个分区。

CREATE TABLE emp(

comm INT DEFAULT 0,

status VARCHAR2(18) DEFAULT '申请'

);

CREATE TABLE tb_emp(

emial VARCHAR2(50) DEFAULT 'aaa'

);

SELECT * FROM tb_emp WHERE email IS NULL --不使用index

SELECT * FROM tb_emp WHERE email = 'aaa' --使用index

Oracle的数据优化(经常被问到)?的更多相关文章

  1. oracle数据库性能优化方案精髓整理收集回想

    oracle数据库性能优化整体法则: 一.降低数据訪问(降低硬盘房訪问次数) 二.返回更少的数据(降低网络传输或磁盘訪问) 三.降低交互次数(降低网络传输) 四.降低server开销(降低cpu及内存 ...

  2. Oracle表的优化一点见解

    Oracle优化的几个简单步骤 数据库优化的讨论可以说是一个永恒的主题.资深的Oracle优化人员通常会要求提出性能问题的人对数据库做一个statspack,贴出数据库配置等等.还有的人认为要抓出执行 ...

  3. 【Oracle】CBO优化详解

    SQL优化是数据优化的重要方面,本文将分析Oracle自身的CBO优化,即基于成本的优化方法.Oracle为了自动的优化sql语句需要各种统计数据作为优化基础.外面会通过sql的追踪来分析sql的执行 ...

  4. 基于Oracle的SQL优化(社区万众期待 数据库优化扛鼎巨著)

    基于Oracle的SQL优化(社区万众期待数据库优化扛鼎巨著) 崔华 编   ISBN 978-7-121-21758-6 2014年1月出版 定价:128.00元 856页 16开 编辑推荐 本土O ...

  5. Oracle索引梳理系列(一)- Oracle访问数据的方法

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  6. 读书笔记-《基于Oracle的SQL优化》-第一章-3

    优化器: 1.优化器的模式: 用于决定在Oracle中解析目标SQL时所用优化器的类型,以及决定当使用CBO时计算成本值的侧重点.这里的“侧重点”是指当使用CBO来计算目标SQL各条执行路径的成本值时 ...

  7. 基于oracle的sql优化

    [基于oracle的sql优化] 基于oracle的sql优化 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 一.编写初衷描述 在应有系统开发初期,由于数据库 ...

  8. 转://从一条巨慢SQL看基于Oracle的SQL优化

    http://mp.weixin.qq.com/s/DkIPwbDKIjH2FMN13GkT4w 本次分享的内容是基于Oracle的SQL优化,以一条巨慢的SQL为例,从快速解读SQL执行计划.如何从 ...

  9. 从一条巨慢SQL看基于Oracle的SQL优化(重磅彩蛋+PPT)

    本文根据DBAplus社群第110期线上分享整理而成,文末还有好书送哦~ 讲师介绍 丁俊 新炬网络首席性能优化专家 SQL审核产品经理 DBAplus社群联合发起人.<剑破冰山-Oracle开发 ...

随机推荐

  1. Vue 源码解读(4)—— 异步更新

    前言 上一篇的 Vue 源码解读(3)-- 响应式原理 说到通过 Object.defineProperty 为对象的每个 key 设置 getter.setter,从而拦截对数据的访问和设置. 当对 ...

  2. java 获取真实IP

    1.java代码 /** 获取客户端IP */ public static final String getClientIp(HttpServletRequest request) { String ...

  3. 字符集编码(三):Unicode

    前面<字符集编码(上):Unicode 之前>我们讲了在二十世纪九十年代 Unicode 出现之前各厂商和标准化组织为了应对不同语言文字的编码需求而设计了各种互不兼容的字符集编码标准,这使 ...

  4. Meterpreter文件系统命令

    实验目的 掌握Meterpreter的文件系统命令 实验原理 1.Meterpreter介绍 meterpreter是metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷 ...

  5. HTTP攻击与防护-函数注入攻击

    实验目的 1.了解eval注入的概念 2.了解eval注入攻击的方式 3.掌握防范攻击的方法 实验原理 1.了解eval注入的概念 2.了解eval注入攻击的方式 3.掌握防范攻击的方法 实验内容 1 ...

  6. 『无为则无心』Python面向对象 — 60、魔法属性

    目录 1.魔法属性__name__ 2.魔法属性__bases__ 3.魔法属性__mro__ 4.魔法属性__doc__ 5.魔法属性__module__ 和__class__ 6.魔法属性__di ...

  7. 报表软件测评来啦!Smartbi电子表格使用感受

    最近因为工作需求,需要用到一些报表工具软件,看到Smartbi比较方便,可以直接在excel中进行配置,所以安装体验了一下. 下载 Smartbi有多个版本,我主要是在excel中使用,所以下载了一个 ...

  8. 由浅入深---MyBatis的全局配置文件

    从我开始接触代码,我就很怕写配置文件,一般的配置文件我都是直接从上一个项目复制到这个项目来改改,可能有部分同学也有我这种痛吧: 我目前一般的做法,先去找找例子(从网上,从github,从官网)之后再改 ...

  9. 安卓应用修改(高德.度盘.QQ浏览器.bili)

    软件介绍 高德地图修改版去广告精简版!核心功能如下: 语音包丰富.有大家最喜欢的小团团语音!测距,实时公交,足迹,限行等主流功能全都有.有完整的地铁图,且更新很快!杭州地铁3号线刚开通就更新了.有车道 ...

  10. RxJS中高阶操作符的全面讲解:switchMap,mergeMap,concatMap,exhaustMap

    RxJS中高阶映射操作符的全面讲解:switchMap, mergeMap, concatMap (and exhaustMap) 原文链接:https://blog.angular-universi ...