Oracle删除重复记录
Oracle删除重复记录的最好的方法:
DELETE from EMP E WHERE E.ROWID > (SELECT MIN(y.ROWID)
from EMP y
WHERE y.EMPNO = E.EMPNO )
1、子查询找出某员工最低的ROWID(肯定只有一个),其它大于这条记录ROWID的,全部删除。
2、Oracle中使用ROWID删除重复记录最快,因为Rowid对应这条记录在磁盘上的位置
面试:性能优化
规则:SELECT子句中避免使用 ‘ * ‘
规则:使用exists语句代替in语句;
使用not exists代替not in
规则:使用truncate代替delete from 表语句
规则:减少访问数据库的次数
规则:减少访问数据库的次数
规则:使用表的别名(Alias)
规则:尽快使用COMMIT
规则:数据库冗余字段的设计
其它:Oracle与性能有关的几个特征(三个缓冲区)
面试:企业为什么经常使用Oracle? Oracle为什么这么牛?
回答:从三个缓冲区入手
一、日志缓冲区
·在添加一条记录时,数据库在后台同时也要记录一条日志
·Oracle能够先将日志写在内存中,缓冲区满后再一次性写入磁盘
二、块缓冲区
·如果一个表(如部门表)很少更新但经常使用,那么可以将该表保存在内存中,从而避免频繁访问磁盘。
·访问内存的速度大于高于访问磁盘的速度。
三、SQL缓冲区
·数据库执行步骤:语法分析、语义分析、编译、优化……
·所以SQL在执行以前所消耗的时间是很长的
·Oracle数据库会将sql保存在SQL缓冲区,如果执行的是相同SQL,则无论执行多少次,都只会编译分析一次。从而减少分析和优化时
间。
相关文档:
oracle表空间操作详解
1
2
3作者: 来源: 更新日期:2006-01-04
5
6
7建立表空间
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
sql语句如下:
select * from userdb40.numservice where ServiceNumber =88880068
and applytime <= to_date('2009-12-26 10:41:44','yyyy-MM-dd HH24:mi:ss')
select to_date('2007-06-28 19:51:20.0','yyyy-MM-dd HH24:mi:ss') from dual; ......
列出配置的所有数据库
[root@node1 ~]# srvctl config database
NOVADB
所有实例和服务的状态
[root@node1 ~]# srvctl status database -d NOVADB
Instance NOVADB1 is running on node node1
Instance NOVADB2 is running on node node2
单个实例的状态
[root@node1 ~]# srvctl status instance -d NOVADB -i NOVA ......
SQL> conn system/oracle
Connected.
SQL> create table scott.t1(id number primary key,name varchar2(10)); --创建测试表
Table created.
SQL> select constraint_name,table_name,constraint_type, --查看相应完整性约束的状态
2 status,deferrable,deferred,validated
3 fro ......
先root打补丁:p3006854_9204_linux.zip
再设oracle环境变量
安装
安装结束建库之前需要打的补丁有:
p2617419_220_GENERIC.zip
p3119415_9204_linux.zip
具体参考这篇文章:
Redhat Enterprise Linux 4安装oracle
关键字: redhat el4 oracle 安装
一. 安装准备
1. as4安装完后,需要检查下列软件 ......