【问题标题】:Auto-increment vs manual incrementing in SQL [closed]SQL中的自动增量与手动增量[关闭]
【发布时间】:2020-11-16 12:47:04
【问题描述】:

我不是数据库专家,但我对 SQL 中的自动递增感到好奇。 它是否有效,我的一个朋友,他的意见,他没有使用自动增量,而是每次插入东西时都取最后一个 id。我怀疑是使用他的想法,我认为效率较低,还是使用数据库本身提供的自动递增。

【问题讨论】:

  • MySQL 还是 SQL Server?无论如何,除非您有非常非常好的理由,否则请使用自动增量。
  • 自动增量或序列总是更快。当您自己执行此操作时,您只能在可序列化的隔离级别执行此操作。否则你可能有重复的数字。
  • “我的一个朋友,他的意见,他没有使用自动递增,而是每次插入东西时都取最后一个 id。” - 我敢打赌他做错了!
  • 我已经删除了这里所有冲突的标签。 SQL Server 与 PHPMyAdmin(一个基于 Web 的 MySQL IDE)或 MySQLi(一个用于在 PHP 中与 MySQL 交互的库)没有交互。
  • "他每次插入东西时都会使用最后一个 id" - 有两种方法可以实现该反模式。对于许多并发事务来说不正确(这是大多数人所做的)或正确且不可扩展。

标签: sql auto-increment


【解决方案1】:

我每次都会使用自动增量。到目前为止,这是确保您拥有独特价值的最佳方式。

如果您使用之前的最高值,除非您小心,否则可能会写入两次相同的值 - 例如,如果应用程序的两个实例检索到相同的之前的最高值,则添加一个并插入新行。 (我已经看到它发生了..)

SQL Server 和 My SQL 都内置了自动增量功能,这是有原因的。仅当您对其他东西有特定需求时,才应避免使用它们。

【讨论】:

    猜你喜欢
    • 2014-02-21
    • 2014-08-09
    • 2013-09-16
    • 2023-03-20
    • 2011-06-10
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    相关资源
    最近更新 更多