Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用优化Mysql更新查询性能_Mysql_Database_Performance_Query Optimization - Fatal编程技术网

使用优化Mysql更新查询性能

使用优化Mysql更新查询性能,mysql,database,performance,query-optimization,Mysql,Database,Performance,Query Optimization,我有一个表,我需要在其中添加一列,该表有数百万条记录。对于现有记录,我必须更新列值(每个记录的列值不同)。运行单个更新查询将花费大量时间。是否有一种方法可以用最少的表锁定时间来实现这一点。在您的情况下,有两种方法 如果您的附加列是派生列(值可以从现有列派生),那么简单的更新查询就足够了 如果不是派生的,则将所有值写入文件(可能是脚本),并将该文件作为新列导入表中。(或导出现有表并使用新列值修改该文件,然后导入) 通过以上两种方式,导入速度更快,锁定量更少。 希望有帮助:)当无法在数据库中生成哈希

我有一个表,我需要在其中添加一列,该表有数百万条记录。对于现有记录,我必须更新列值(每个记录的列值不同)。运行单个更新查询将花费大量时间。是否有一种方法可以用最少的表锁定时间来实现这一点。

在您的情况下,有两种方法

  • 如果您的附加列是派生列(值可以从现有列派生),那么简单的更新查询就足够了

  • 如果不是派生的,则将所有值写入文件(可能是脚本),并将该文件作为新列导入表中。(或导出现有表并使用新列值修改该文件,然后导入)

  • 通过以上两种方式,导入速度更快,锁定量更少。
    希望有帮助:)

    当无法在数据库中生成哈希值时,您唯一能做的就是运行单个更新。通过将多个更新批处理到一个事务中,您可以获得一些性能改进。

    您希望使用哪些值更新列?连续整数,随机数,还有其他的…?你需要详细说明。什么样的价值?应该如何计算?它依赖于什么?@Joni它将是一个varchar字段。@peterm它基本上是一个散列,将使用bcrypt-algo(用ruby、应用程序逻辑实现)生成。