mysql - 在 Mysql 中使用随机数据更新大量行
问题描述
我有一个包含个人数据的数据库,我想用随机名称等匿名化。例如,表person (id int, first_name varchar, last_name varchar, birth_date date)
。我也有一个随机名称的表,例如。first_name (id int, value varchar)
. 我知道这归结为优化select * from ... order by rand()
,我已经阅读了几个关于它的 StackOverflow 问题(和http://jan.kneschke.de/projects/mysql/order-by-rand/),但这并不能回答问题批量更新随机数据。
我试过了:
- (最初)
UPDATE _person me SET birth_date = (SELECT value FROM anonymizer.birth_date ORDER BY RAND() LIMIT 1)
(......其他列相同)。由于有多个表,当我打断它时,匿名整个数据库需要一个小时。 - (目前)
UPDATE _person me join anonymizer.first_name on anonymizer.first_name.id = round(rand() * (select max(id) from anonymizer.first_name)) SET first_name = anonymizer.first_name.value
。这个单一查询花费了 5 分钟(除了其他列和表)。
我可以以任何方式准备我的假数据表(使用序列号等初始化)。有没有办法有效地匿名数据库?
解决方案
推荐阅读
- javascript - React Native 移动应用中基于用户角色的屏幕导航
- java - Selenium 在 div Java 中找到具有特定类名的最后一个元素
- python - 在 python 请求模块中查找 javascript 和 css 中的注释
- javascript - axios 在所有请求中都给出 404 not found 错误
- python-3.x - 在使用 pyupdater(pyinstaller)打包的基于 dlib 的应用程序中,dll 加载失败,错误代码为 3221225501
- javascript - 使用字符串动态创建多选布局
- javascript - 用鼠标反应原生 web scrollView 水平滚动
- node.js - ./node_modules/node-libcurl/lib/binding/node_libcurl.node 中的错误
- node.js - 持续接收 14 不可用:流被服务器拒绝。为每个请求创建 BigTable 客户端?
- r - ggplot2,一个条形图,多个变量