我现在有张表A,数据量不超过2000W,我要对他做如下操作
1.重命名A为B
2.删除B上的外键
3.新建表A及外键关联A表只引用了其他表作为外键,自己本身并没有作为任何表的外键。我这样做只是想清理下A表的数据,放在备份的B表而已。我想问问,这样做,有没有什么问题,是否存在安全隐患。
另外,数据量接近2000W,这个操作有没有效率问题。就是执行速度。
我在100W的数据上测试,没有发现问题。

解决方案 »

  1.   

    要在outline模式下做吧,要不你rename得时候别人要操作杂拌?
      

  2.   

    我这样做只是想清理下A表的数据,放在备份的B表而已。建立B表(未填充数据):CREATE B as select * from A where 1=2
    建立B表(填充数据):CREATE B as select * from A 
    这样建立的B表无外键关系,就建立的备份表B了然后再清理A表里的数据便可
     
      

  3.   

    CREATE TABLE B晕倒,少打了个TABLE
      

  4.   

    这样是实现了需求,但这样2000w的数据多出来一倍,浪费了空间,其次将数据备份到B后,清理A表的数据,这时候A中有数据且应用系统正在使用,清理起来会有所顾虑。其实我就是想问问,对千万级的表rename会不会有效率问题,对数据库有没有什么影响,比如原表的索引什么的。