gpt4 book ai didi

MySQL 复制 INSERT...SELECT 和 ORDER BY

转载 作者:行者123 更新时间:2023-11-29 14:51:27 25 4
gpt4 key购买 nike

documentation page for INSERT ... SELECT指出要使 INSERT ... SELECT 与复制一起使用,必须使用 ORDER BY 某些列,以便可以按可预测的顺序插入行,因此自动增量列将正常工作。

这让我想知道......当你执行ORDER BY并且你选择的列不是唯一的时,MySQL使用什么来决定进一步的排序?它必须是确定性的,否则文档会说您需要选择一个 ORDER BY 唯一列,是吗?还是文档有误?

最佳答案

如果您使用的 ORDER BY 列中的所有匹配行都没有不同的值,则顺序是不确定的,是的。

如果插入的顺序很重要,这确实会破坏基于语句的复制。如果您在目标表中使用 auto_increment 列,则插入顺序当然很重要,但否则通常不会。

如果您对语句有限制(更新和删除也是如此),顺序也很重要。

但是,如果您使用基于行的复制,您几乎可以做任何您喜欢的事情,并且不会破坏复制。至少,除非你真的尝试过,否则不会。

<小时/>

这些规则非常复杂,因此我建议您始终在插入...选择或带有 LIMIT 的 UPDATE 上使用完全确定的 ORDER BY。

基于行的复制也是您的 friend 。我在生产中并没有真正使用它,但了解这一点

  • 它与其他数据库中的复制工作方式更相似
  • 大多数时候它都能正常工作。

关于MySQL 复制 INSERT...SELECT 和 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com