设为首页 加入收藏

TOP

Oracle数据库操作---基础使用(二)(二)
2019-09-17 18:53:57 】 浏览:53
Tags:Oracle 数据库 操作 --- 基础 使用
进行结果集排序【排序一定是最后执行的,将所有查询的数据都执行完之后才进行,否则将失去排序的作用】

oracle 语句提高查询效率的方法

  语句1: where column in(select * from ... where ...);

  语句2:... where exists (select 'X' from ...where ...);

  第二种格式要比第一种格式的效率高。

  在Oracle中几乎可以将所有的IN关键字子查询改写为Exists的子查询。在使用Exists时,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时

间。Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果表存放在在一个加了索引的临时表中。

  避免使用Having子句,Having只会在检索出所有记录之后才对结果集进行过滤,这个处理需要排序,总计等操作。如果能通过where子句限制记录的数目,那就能减少这方面的开销。

SQL初级优化:

①选择最有效的表名顺序(只在基于规则的优化器中有效)

上面已经提到,Oracle的解析器是按照从右向左的顺序处理From子句中的表或索引的,

在由多个表名的情况下,建议将子句中最小数据量的表作为基础表(driving table)放在最右面,将被最先执行;

②Where子句中的连接顺序

Oracle采用自下向上,自右向左的顺序执行限制条件,所以,建议将表之间的连接写在where后面的紧挨着的位置,那些可以过滤掉最大数据量的条件写在where子句的末尾.

③Select子句中避免使用星号 *

④使用Exists替代IN、使用NOT Exists替代NOT IN;

⑤SQL语句用大写的;因为Oracle总是先解析SQL语句,将小写字母转换成大写字母【但是开发中,Mapper.xml中建议使用全小写字母去写,因为项目最终运行环境是Linux,如果xml文件中sql与pojo中的大小写不一致,会导致Linux环境中运行出错】

⑥避免在索引列上使用计算;

⑦用IN来替换OR【上面提到如果可以使用Exists的地方,使用Exists】

>>数据备份之单表备份数据

备份表temp

insert into temp01 select * from temp;

如果没有temp01

create table temp01 as select * from temp;

 

文中有一部分是参照别人写的进行总结学习的,如果有什么错误的地方,欢迎大家指正,我会及时修改;

由于有一些其他的任务,暂时先写这些吧,后面会慢慢追加主键、外键、索引、视图的创建和使用,技术的东西只能一点一点来,加油!

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇mysql数据库使用insert语句插入中.. 下一篇CentOS 7 MySql 解压版安装配置

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目