我有一个包含大约一百万(1,000,000)行的 MYSQL 数据库,我想检查所有行并根据条件更新一些行,所以例如我运行这样的 SQL 语句:
select messageid from messages where messageid !=""
然后我获取所有 ID 并将它们存储在变量中:
$existMessages;
然后我生成一个 4 个字符的字符串 0-9a-z :
function generateRandomString($length = 4) {
return substr(str_shuffle(str_repeat($y='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($y)) )),1,$length);
}
然后,在检查生成的 ID 是否唯一后,我使用生成的字符串更新现有 ID。
随着行数的增加,此过程会变得更慢并占用整个 CPU。
有更好的方法吗?喜欢直接在MYSQL中使用SQL语句吗?或者该怎么办?
最佳答案
您应该首先在您想要唯一的列上添加唯一或主要
约束。
之后就可以执行更新命令
UPDATE TABLE_NAME SET COLMUN_NAME=generateRandomString() WHERE messageid !="";
关于php - 如何检查/更新包含约百万行的数据库中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49720282/