distinct oracle 去重优化_oracle distinct 优化 - CSDN
精华内容
参与话题
  • oracle distinct多字段去重

    千次阅读 2016-02-19 10:59:00
    --select * from ti_vw_boss结果: transactionid dn dn_type productid src_spid opt_type opt_time state 100000000000011213 15855057001 0 PI

    --select * from ti_vw_boss结果:

    transactionid   dn                     dn_type productid                     src_spid                opt_type   opt_time      state
    100000000000011213 158550570010PIBPXXT100118510 0 18-2月 -16 0
    100000000000011244 158550570010PIBPXXT100118510 0 18-2月 -16 0


    现在要对表数据去重,留下一行,修改如下:

    select * from ti_vw_boss where transactionid in (select min(TRANSACTIONID) from ti_vw_boss group by dn,dn_type,productid,src_spid);

    结果:

    transactionid   dn                     dn_type productid                     src_spid                opt_type   opt_time      state
    100000000000011213 158550570010PIBPXXT100118510 0 18-2月 -16 0


    满足要求!



    展开全文
  • oracle 去重几个方法

    万次阅读 2014-08-22 14:58:07
    原文laizi 几个删除重复记录的SQL语句  1.... 2.... 3.... 据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:  查数据:  select * from table1 a where rowid !=(select max


    几个删除重复记录的SQL语句

      1.用rowid方法

      2.用group by方法

      3.用distinct方法

      1。用rowid方法

      据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:

      查数据:

      select * from table1 a where rowid !=(select max(rowid)

      from table1 b where a.name1=b.name1 and a.name2=b.name2……)

      删数据:

      delete from table1 a where rowid !=(select max(rowid)

      from table1 b where a.name1=b.name1 and a.name2=b.name2……)

      2.group by方法

      查数据:

      select count(num), max(name) from student --列出重复的记录数,并列出他的name属性

      group by num

      having count(num) >1 --按num分组后找出表中num列重复,即出现次数大于一次

      删数据:

      delete from student

      group by num

      having count(num) >1

      这样的话就把所有重复的都删除了。

      3.用distinct方法 -对于小的表比较有用

      create table table_new as select distinct * from table1 minux

      truncate table table1;

      insert into table1 select * from table_new;

    展开全文
  • oracle 真正去重效率语句

    千次阅读 2015-08-11 14:51:41
    insert into quchong select * from myallpoi where rowid in ( SELECT MIN(rowid) AS id FROM myallpoi GROUP BY uuid) 30万数据14秒

    insert into quchong select * from myallpoi where rowid in ( SELECT MIN(rowid) AS id FROM myallpoi GROUP BY uuid)

    30万数据14秒

    展开全文
  • Oracle——distinct的用法(效率)

    万次阅读 2015-12-31 16:28:09
    Oracle——distinct的用法 博客分类:  Oracle oracledistinctgroup by  distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不...
    
    
    distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。

    下面先来看看例子:

    table表

    字段1     字段2    id        name    1           a    2           b    3           c    4           c    5           b

    库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。

    比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。

    select distinct name from table 得到的结果是:

     

    ---------- 

    name    a    b    c

    好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:

    select distinct name, id from table

    结果会是:

    ---------- 

    id name    1 a    2 b    3 c    4 c    5 b

     

    distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。

    我们再改改查询语句:

     

    select id, distinct name from table

    很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。

    ------------------------------------------------------------------------------------------------------------

     

    下面方法也不可行:

    select *, count(distinct name) from table group by name

    结果:

     

    ORA-00979: not a GROUP BY expression
    00979. 00000 -  "not a GROUP BY expression"

     

    依然报错,

     

    group by 必须放在 order by 和 limit之前,不然会报错

     

    ------------------------------------------------------------------------------------------------------------

     

    偶认为这样可行

    select max(id), name from table group by name;

     

    结果:

    id name

    1  a

    2  b

    4  c

    5  d

     

    参考资料:

    http://www.cnblogs.com/dogxuefeng/archive/2012/06/21/2557700.html

    http://stevenfeng.iteye.com/blog/841793

     


    展开全文
  • distinct用法和优化

    千次阅读 2014-06-15 19:17:06
    正确的语法 select distinct c
  • 之前去重都是使用distinct,后来在项目上优化SQL的时候发现我司有个开发人员喜欢使用group by来去重,他的解释是group by性能好,那么实际情况到底是怎样的呢?我在测试环境下进行了模拟,毕竟,实践是检验真理的...
  • APPROX_COUNT_DISTINCT 近似去重统计函数

    千次阅读 2015-11-30 15:14:52
    The new and optimized SQL function, APPROX_COUNT_DISTINCT(), provides approximate count distinct aggregation. Processing of large volumes of data is significantly faster than the...
  • 不说废话,直接上代码。 以下查询是基于mysql自带的country,city,countrylanguage三个样例表做的: ...SELECT count(distinct Code, Name, Continent, Region, SurfaceArea, IndepYear, Population, Life...
  • 今天mentor给了一个sql语句优化的任务。(环境是sql developer)有一个语句执行很慢,查询出来的结果有17544条记录,但需970秒,速度很慢。语句是这样的: SELECT DISTINCT 'AMEND_NEW', reporttitle, ...
  • 尽量不要使用 distinct

    万次阅读 2015-01-18 22:52:37
    大多数情况下,Distinct函数都会导致对最终结果集完成一次排序,因此,这就成为成本最昂贵的排序之一。Distinct一直是SQL语言中成本最高的函数之一。不过,对于DB2V9,优化工具会尽量利用索引来消除为确定唯一性所...
  • 客户反馈说结算记录列表界面打开非常慢,客户帐套是ORACLE9I优化前20分钟左右,优化后20秒以内结论:大伙以后还是尽量不要用DISTINCT(特殊情况下,非全部),性能太差了. 首先我自己在本地试了一下,确实是这个样子,我本地...
  • Oracle 中去除重复数据

    万次阅读 2016-03-08 12:19:19
    在网上查了一下,去除重复数据有两种情况:1、部分字段重复,对于这种情况可这样做:(1)create table 临时表 as select a.字段1,a.字段2,MAX(a.ROWID) dataid from 正式表 a GROUP BY a.字段1,a....
  • 最近发现很多时候代码优化有限的时候sql的利用优化就很关键了特别是sql中的一些函数的使用,以下是最近使用的函数整理下 1.0.0 去重 DISTINCT distinct(xxx) 函数可以起到 去重的作用 distinct(id) 等于去除重复的...
  • 此文是根据原作者所著加上自己的理解总结出来的,如果有什么问题欢迎各位提出一起交流探讨。先贴出原文如下: 某前台sql语句,简化后如下 SELECT products_name,products_viewed FROM `products_description`  ...
  • 带有distinct的分页SQL优化

    千次阅读 2017-03-17 17:59:45
    给物流系统的开发人员优化一支报表SQL,情况如下:  原分页SQL: select * from (select row_.*, rownum rownum_ from (select T__.*, rownum as ROWNUM__ from (  SELECT distinct  --EOOR.CO
  • oracle优化一中用group by优化distinct

    万次阅读 2011-09-19 09:45:44
    今天mentor给了一个sql语句优化的任务。(环境是sql developer)有一个语句执行很慢,查询出来的结果有17544条记录,但需970秒,速度很慢。语句是这样的:SELECT DISTINCT 'AMEND_NEW', repor
  • select * from tableA where exists(select 1 fro tableB where tableA.id = tableB.id) 搞定了一对多表中以多表的字段内容... in (select distinct .. 模式,对于使用top来翻页的语句来说,基本上就是一句优化句。
  • Oracle DISTINCT 关键字

    千次阅读 2010-09-24 15:55:00
    只要有增加DISTINCT关键字,Oracle必然需要对后面的所有字段进行排序。以前也经常发现由于开发人员对SQL不是很理解,在SELECT列表的20多个字段前面添加了DISTINCT,造成查询基本上不可能执行完成,甚至产生ORA-7445...
  • 小草-oracle-上海(60xxxx0) 13:48:36 排序区(或work area)究竟归属于内存的哪个位置? 群主向上-Oracle(429yyyy3) 13:51:40 sort_area_size 是pga的吧 减少排序的方法: (1)加索引 (2)如果是对...
1 2 3 4 5 ... 20
收藏数 1,993
精华内容 797
关键字:

distinct oracle 去重优化