热门搜索:安全 黑客 方法 简单方法 部分 官方 国防 相信 盲目 广告 写给 科大
数据库导航: 资讯  Foxpro  MySQL  SQL Server  Oracle  DB2  Access  Informix  SQLite  PL/SQL  Sybase  PostgreSQL  数据仓库  其他系统
您现在的位置:嘉文IT资讯网 >> 数据库 >> Oracle >> 浏览文章
Oracle |
Oracle单表去重
作者:佚名 日期:2010年08月21日 来源:本站原创  【字体: 】   我要评论(5)
核心提示: 去重有两层含义,一是记录完全一样。而是符合一定条件的认为是重复。   根据表的数量,去重可划分为单表去重和多表关联去重。   对于去重,一般最容易想到的是用distinct,而distinct只能对完全重复的记录保留
去重有两层含义,一是记录完全一样。而是符合一定条件的认为是重复。

  根据表的数量,去重可划分为单表去重和多表关联去重。

  对于去重,一般最容易想到的是用distinct,而distinct只能对完全重复的记录保留一条。distinct使用的是二重循环来去重的,如果数据量非常大的时候,会导致性能急剧下降。

  下面是一个单表去重的测试,认为name字段相同的即为重复记录,要查询出一个结果,过滤掉重复,distinct显然不能满足要求。

  表SQL:

create table A_TEST    
(    
        id                 number,    
        name         varchar2(20),    
        remark varchar2(20)    
);    
insert into A_TEST (ID, NAME, REMARK)    
values (1, 'a', 'ss');    
insert into A_TEST (ID, NAME, REMARK)    
values (2, 'b', 'xxx');    
insert into A_TEST (ID, NAME, REMARK)    
values (3, 'b', 'x');    
insert into A_TEST (ID, NAME, REMARK)    
values (4, 'b', 'asd');    
insert into A_TEST (ID, NAME, REMARK)    
values (5, 'c', 'axxx');    
insert into A_TEST (ID, NAME, REMARK)    
values (6, 'c', 'asdf');    

  去重方式一(低效):

select a.*    
        from A_TEST a, (select min(id) as id from A_TEST t group by name) b    
where a.id = b.id;

点击浏览下一页

  去重方式一(高效):

select *    
        from (select a.*, rownum row_num from A_TEST a) x    
where x.row_num in (select min(rownum) from A_TEST t group by name)

点击浏览下一页

  可见,使用rownum的效率比使用id的效率要高,当表数据量很大的时候,差距会很明显。

Tags:系统 | 安全 | 编程 | 数据库 | 设计 | 网络 | 通信 | 办公 | 服务器 | 软件应用
发表评论】【告诉好友】【打印此文】【收藏此文】【关闭窗口
上一篇:oracle 服务启动,关闭脚本(Windows系统下)
下一篇:没有了
相关文章列表
·Oracle数据库
·oracle 服务启动,关闭脚本(Win
·Oracle单表去重
·Oracle数据库的四种启动方式
·水晶报表在IE中不显示工具条的解
·ORACLE-删除同一字段中重复值函数
·Oracle数据库索引需要后续呵护
·利用OMF来简化数据文件的管理
·Oracle结构设计技巧
·Oracle数据库共享连接和专用连接
网友评论
最新新闻
· Oracle单表去重
· oracle 服务启动,关闭脚本(Win
· 利用OMF来简化数据文件的管理
· Oracle数据库性能:表占用盘区解
· Oracle数据库索引需要后续呵护
· Oracle结构设计技巧
· Oracle数据库的四种启动方式
· Oracle数据库共享连接和专用连接
· 水晶报表在IE中不显示工具条的解
· Oracle存储过程写法
推荐新闻
· Oracle单表去重
· oracle 服务启动,关闭脚本(Win
· 利用OMF来简化数据文件的管理
· Oracle数据库性能:表占用盘区解
· Oracle数据库索引需要后续呵护
· Oracle结构设计技巧
· Oracle数据库的四种启动方式
· Oracle数据库共享连接和专用连接
· 水晶报表在IE中不显示工具条的解
· Oracle存储过程写法
热门新闻
· Oracle单表去重
· oracle 服务启动,关闭脚本(Win
· 利用OMF来简化数据文件的管理
· Oracle数据库性能:表占用盘区解
· Oracle数据库索引需要后续呵护
· Oracle结构设计技巧
· Oracle数据库的四种启动方式
· Oracle数据库共享连接和专用连接

关于我们 | 联系我们 | 版权申明 | 广告服务 | 网站地图 | 免责条款

Copyright 2010-2015 Powered by jiawenit.com,嘉文网络科技开发 All Rights Reserved.
服务电话:15095181829 E-Mail:suijiawen@163.com
售前咨询服务QQ:点击这里给我发消息 售后服务技术支持QQ: 点击这里给我发消息点击这里给我发消息