向表添加唯一键/索引及其对现有记录的影响



到目前为止,我有一个表运行良好,没有唯一键。这个表运行良好,但插入/更新/删除过程的代码变得有点不可读,因为识别表中正确条目的条件越来越长,所以我开始考虑添加一个具有唯一ID的新列。

关于在SO上向表中添加唯一标识的问题已经得到了回答,但我想知道这是否会对当前现有的记录产生任何负面影响。这个表本身并不大,它的条目从来没有超过几千个,但它经常被使用和更新,要停止使用它一刻也不容易。那么,我是否应该意识到有什么可能会弄乱数据,或者我可以很高兴地添加一个具有唯一标识的列,这样一切都会很好?当前存在的存储过程,尤其是更改记录的存储过程是否存在任何问题?老实说,我想不出什么,但我宁愿确定,因为我在SQL和数据库方面还远远没有经验。

向已经存在的表添加索引也是如此——我想会有一些转换,所以对记录有任何负面影响吗?

如果您需要我提到的过程的示例,只需考虑简单的插入/删除/更新语句,其中包含不必要的长where子句。没有与其他表的联接,单个过程中没有多个事务。

添加列或更改索引不会影响当前数据。

但代码可能会受到影响。

  1. SELECT *现在将返回更多列
  2. 列顺序可能会根据添加列的位置而更改
  3. 有些人可能在没有列列表的情况下INSERT。现在这将失败
  4. 性能可能会稍微变差。如果你的应用程序依赖非常严格的性能标准,那可能是个问题。我认为这不太可能

我相信还有其他的,但这些是我现在能想到的。

最新更新