数据库有10万条有序的记录,怎么样把它打乱呢,就是随机排序?
性能怎么样?假设100万,1000万记录打乱顺序,那又该怎么办呢?

解决方案 »

  1.   

    insert into newTable (f1,f2,f3,..fn) select f1,f2,f3,..fn from oldTalbe order by rand();
      

  2.   


    如果打乱了,那我查询的时候就不用select order by rand()了,因为已经是随机了
      

  3.   

    如果你的表里没有主键的话,可以按照下面的方式试试:
    首先,给表加一个字段:alter table t add column rands float default 1 primary key;
    然后,给这个字段赋值:update t set rands=rand();
    这样就可以完成在物理结构上的无序了。因为这个primary key是聚簇索引。
    但如果你的表已经有了主键或者UNIQUE字段的话,可以将他们暂时关闭,再按上面的方法做,但这样也许不是可以通过的。因为再次创建UNIQUE索引或者主键的时候,是无法创建的了,因为主键已经被rands字段使用了。