事情是这个样子的:公司的程序员开发的程序很烂,没有办法判断接收到的数据是否在数据库里面存在,因为存放这个数据的表数据量非常大(9位数以上的数据,分区存储),于是就在3个字段上建立了一个联合的unique索引,由数据库来判断是否由重复的,如果有重复的就insert 不进去。由于分区的列不合理,我需要重新建立一个同样的表,然后在别的列上建立分区。在把数据灌到新的表里面。最后在创建那该死的unique索引。问题来了:从服务器上exp的数据全部都imp到新的表里面了,也按照新的分区进行存储了。我靠,建立索引的时候提示:表内有重复的记录没有办法建立unique的索引。。吐血。想问:
1、create index unique有没有参数可以在创建的时候忽略表中的重复数据,然后在插入的时候在起作用。
2、服务器上明明那3列是unique的索引的,为啥后来创建不上了。(在导出和导入数据的时候,没有任何程序操作这个表旧表和新表)哪位老大给个参数吧,我从google上找了N就了也没有找到。我知道就是因为一个参数的问题导致了我这么被动。
不会让我要从9位数的表里面把那3列重复的记录删除了在创建索引吧??

解决方案 »

  1.   

    1、create index unique有没有参数可以在创建的时候忽略表中的重复数据,然后在插入的时候在起作用。--不行!2、服务器上明明那3列是unique的索引的,为啥后来创建不上了。(在导出和导入数据的时候,没有任何程序
    操作这个表旧表和新表)--导入的时候,没有考虑索引!
      

  2.   

    个人觉得一个可能性是这样的。创建索引之前 表中有数据。
    这个时候创建索引 但用了 enable novalidate 关键字
    索引成功 但不会检查表中已有的数据。
    导致有重复数据。如果你再创建的时候没有用上面的关键字 就会报错