怎么把数据库表里记录顺序打乱

ldb2741 2010-03-16 11:12:54
数据库有10万条有序的记录,怎么样把它打乱呢,就是随机排序?
性能怎么样?假设100万,1000万记录打乱顺序,那又该怎么办呢?
...全文
966 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldb2741 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acmain_chm 的回复:]
insert into newTable (f1,f2,f3,..fn) select f1,f2,f3,..fn from oldTalbe order by rand();
[/Quote]

十万百万千万数据,那得运行多久啊
ACMAIN_CHM 2010-03-16
  • 打赏
  • 举报
回复
insert into newTable (f1,f2,f3,..fn) select f1,f2,f3,..fn from oldTalbe order by rand();
ldb2741 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vipper23 的回复:]
SQL code
order by rand()
[/Quote]

这个是查询用的,我要的是把表中顺序打乱放回原表
vipper23 2010-03-16
  • 打赏
  • 举报
回复
order by rand()
老哥讲数据库 2010-03-16
  • 打赏
  • 举报
回复
如果你的表里没有主键的话,可以按照下面的方式试试:
首先,给表加一个字段:alter table t add column rands float default 1 primary key;
然后,给这个字段赋值:update t set rands=rand();
这样就可以完成在物理结构上的无序了。因为这个primary key是聚簇索引。
但如果你的表已经有了主键或者UNIQUE字段的话,可以将他们暂时关闭,再按上面的方法做,但这样也许不是可以通过的。因为再次创建UNIQUE索引或者主键的时候,是无法创建的了,因为主键已经被rands字段使用了。
ldb2741 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yangxiao_jiang 的回复:]
把物理顺序改变,有意义吗?
[/Quote]

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

ACMAIN_CHM 2010-03-16
  • 打赏
  • 举报
回复
把物理顺序改变,有意义吗?
有时有,特别是把数据做得象真的自然产生的一样时候需要(换句大白话,就是做假时需要
yangxiao_jiang 2010-03-16
  • 打赏
  • 举报
回复
把物理顺序改变,有意义吗?
ACMAIN_CHM 2010-03-16
  • 打赏
  • 举报
回复
这没办法,因为你想实现的表中记录的物理顺序改变。避免不了重定所有记录。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧