Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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_Optimization - Fatal编程技术网

如何克服外键约束问题来优化MySql表

如何克服外键约束问题来优化MySql表,mysql,database,optimization,Mysql,Database,Optimization,我的应用程序写入表core;这个名字是不可变的。它变得非常大(数百万行),因此它的大小使得插入的速度比需要的慢。我的解决方案是在core中只保存一周的数据。因此,我构建了一个表core\u archive,将超过一周的所有内容按预定的时间间隔放入 脚本每隔一段时间获取core中的所有新值,对它们进行操作,并将它们放入第三个表core\u details。该模式使得core\u details对core中的PK具有外键约束 我的问题是,由于这个外键约束(在core\u detail和core之间)

我的应用程序写入表
core
;这个名字是不可变的。它变得非常大(数百万行),因此它的大小使得插入的速度比需要的慢。我的解决方案是在
core
中只保存一周的数据。因此,我构建了一个表
core\u archive
,将超过一周的所有内容按预定的时间间隔放入

脚本每隔一段时间获取
core
中的所有新值,对它们进行操作,并将它们放入第三个表
core\u details
。该模式使得
core\u details
core
中的PK具有外键约束

我的问题是,由于这个外键约束(在
core\u detail
core
之间),我无法从
core
中删除任何行。那我该怎么办

选项:

  • 执行ALTER TABLE命令,将旧外键约束指向
    core\u archive
    。不过,在大型生产数据库上确实不应该也不可能安全地执行此操作
  • ??[我没有其他可行的想法……斯塔克有什么想法吗?]

  • 您还必须创建一个
    core\u details\u archive
    表,并归档指向计划归档的
    core
    行的
    core\u archive
    。根据您的数据结构,这种方法可能需要扩展到任意数量的表。

    是的,到目前为止,这似乎是唯一的选择。谢谢你的建议。