假如: 我有一个ORACLE数据库。
       其中有个T_Main表
       里面有100百万条记录。T_main表的结构是
  
  MainID    Number(10) 主键
  UserName  Vchar2(20)
  UserYear  char(8)
  UserSex   char(2)
  UserTel   char(15)现在t_main表里有很多重复记录,重复记录的定义是MainID不同,但其他字段
都是相同的。
 
要求把这些重复记录找出来。
关键是速度和效率的问题。求好的思路和算法。可以不光是程序代码的角度,还可以从数据库的角度,从硬件的角度来分析。
up 有分

解决方案 »

  1.   

    1。用查询集,但如果数据较多,查询集因为没有索引可能影响速度
    2。用游标
    3。建临时表
    随便写一下,因为现在在网吧:(select  username,useryear,usersex,userTel
    from t_main
    where MainID not in 
    (select max(MainID) from t_main
    group by  username,useryear,usersex,userTel)
      

  2.   

    先排序在查找!
    有问题请发信息到我的E-mail:[email protected]
      

  3.   

    简单搞定:
    Select UserName, UserYear, UserSex, UserSex,UserTel,count(*)
    From T_main
    group by UserName, UserYear, UserSex, UserSex,UserTel
    看看结果,呵呵
      

  4.   

    上楼的兄弟真牛。
    其实,这样就可以了
    Select UserName, UserYear, UserSex, UserSex,UserTel
    From T_main
    group by UserName, UserYear, UserSex, UserSex,UserTel