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 插入Y时更新记录X的最佳方法_Mysql_Database - Fatal编程技术网

Mysql 插入Y时更新记录X的最佳方法

Mysql 插入Y时更新记录X的最佳方法,mysql,database,Mysql,Database,我有一个巨大的表,主要用于备份和管理目的。唯一重要的记录是最后插入的记录 在每一次点击订单时,插入的时间都太慢了。我想用最后插入的id保留一个单独的表 在PHP中,我现在插入,获取最后插入的id,并更新另一个表 有更有效的方法吗。您可以使用在数据库端执行此操作。您可以使用在数据库端执行此操作。为什么不在该字段上添加索引 快速搜索和排序正是索引的用途 在表中更新自己的“伪索引”相当于重新发明轮子 此外,在DB中添加触发器总是让人觉得很可疑,因为我不太清楚 为什么不在该字段上添加索引 快速搜索和排序

我有一个巨大的表,主要用于备份和管理目的。唯一重要的记录是最后插入的记录

在每一次点击订单时,插入的时间都太慢了。我想用最后插入的id保留一个单独的表

在PHP中,我现在插入,获取最后插入的id,并更新另一个表


有更有效的方法吗。

您可以使用在数据库端执行此操作。

您可以使用在数据库端执行此操作。

为什么不在该字段上添加索引

快速搜索和排序正是索引的用途

在表中更新自己的“伪索引”相当于重新发明轮子


此外,在DB中添加触发器总是让人觉得很可疑,因为我不太清楚

为什么不在该字段上添加索引

快速搜索和排序正是索引的用途

在表中更新自己的“伪索引”相当于重新发明轮子


此外,在DB中添加触发器总是让人觉得很可疑,因为我不太清楚

很抱歉将此作为一个单独的答案发布,对于马蒂的答案发表评论有点太长了

与触发器相关的性能开销很小,但如果我没记错的话,正常使用时,它的性能开销可以忽略不计,当然,这取决于您使用触发器的方式。大多数情况下,只有在执行批量上传时才会出现问题,在这种情况下,您通常会在任务期间删除/禁用触发器。在我看来,这里的开销将非常小,因为除了在Y上执行插入操作外,您实际上只在X上执行一次插入/更新


本质上,触发器的伸缩性比当前方法要好得多,因为您不必执行查找来查找最后更新的记录,只需执行插入操作,然后直接将新记录的主键插入到最后更新的表中。

很抱歉将此作为单独的答案发布,对马蒂的回答发表评论有点太长了

与触发器相关的性能开销很小,但如果我没记错的话,正常使用时,它的性能开销可以忽略不计,当然,这取决于您使用触发器的方式。大多数情况下,只有在执行批量上传时才会出现问题,在这种情况下,您通常会在任务期间删除/禁用触发器。在我看来,这里的开销将非常小,因为除了在Y上执行插入操作外,您实际上只在X上执行一次插入/更新


本质上,触发器的伸缩性比当前方法要好得多,因为您不必执行查找来查找最后更新的记录,只需执行插入操作,然后直接将新记录的主键插入到最后更新的表中。

您知道如何按性能伸缩吗。我知道COUNT*RAND等函数在大型数据集中的性能不好。你有关于触发器的信息吗?你知道这是如何衡量性能的吗。我知道COUNT*RAND等函数在大型数据集中的性能不好。你有关于触发器的信息吗?哦,我的问题有点不同。有不同的群体。因此,我想为这些组插入最后一个id。使用这种方法,我需要按分组,然后按排序。这是低效的。对不起,有点不清楚。不过,如果你刚才回答了我的主要问题,这就不会有问题了。有时,如果你回答了人们的问题,而不是尝试为他们重新发明一种新方法,那就太好了。你描述了一个问题“我有一个巨大的表-只有最后插入的记录才重要”,然后你在插入和更新时声明另一个表和触发器,这可能是存档,因此没有更新是解决该问题的方法。。时间戳上的索引将允许您快速获取最后一个。顺便问一下,你希望小组完成什么?你有多个小组需要知道最后一次插入的时间吗?基本上你想知道的是:插入Y时更新记录X的最佳方法。哦,我的问题有点不同。有不同的群体。因此,我想为这些组插入最后一个id。使用这种方法,我需要按分组,然后按排序。这是低效的。对不起,有点不清楚。不过,如果你刚才回答了我的主要问题,这就不会有问题了。有时,如果你回答了人们的问题,而不是尝试为他们重新发明一种新方法,那就太好了。你描述了一个问题“我有一个巨大的表-只有最后插入的记录才重要”,然后你在插入和更新时声明另一个表和触发器,这可能是存档,因此没有更新是解决该问题的方法。。时间戳上的索引将允许您快速获取最后一个。顺便问一下,你希望小组完成什么?您是否有多个组需要k
现在,最后一次插入?基本上,我们想知道的是:在插入Y时更新记录X的最佳方法。如果触发器将直接获取最后一次插入的id,而不进行查找,这将非常好。我没有批量操作,所以这对我来说不是问题。然而,我总是担心使用mysql的内置功能,因为其中一些功能的扩展性不好。在这种情况下是这样的。我将查找触发器并应用它。如果触发器直接获取最后插入的id而不进行查找,这将是非常好的。我没有批量操作,所以这对我来说不是问题。然而,我总是担心使用mysql的内置功能,因为其中一些功能的扩展性不好。在这种情况下是这样的。我将查找触发器并应用它。