首页 > 解决方案 > 没有索引的唯一约束

问题描述

假设我有一张大桌子。

这个表不用查询,我只是想把里面的数据保存一会儿。

我想防止表中的重复行,所以我想添加一个唯一的

表上的约束(或 PK)。

但是自动创建的唯一索引确实是不必要的。

我不需要它,它只是在浪费磁盘空间并需要维护(不管创建它的时间长短)。

有没有办法在没有索引的情况下创建唯一约束(任何索引 - 唯一或非唯一)?

谢谢你。

标签: oracleindexingoracle11gconstraints

解决方案


不,您不能在没有相应索引的情况下在 Oracle 中拥有 UNIQUE 约束。添加约束时会自动创建索引,任何删除索引的尝试都会导致错误

ORA-02429: cannot drop index used for enforcement of unique/primary key

祝你好运。

编辑

但是你说“假设我有一张大桌子”。那么我们在这里谈论多少行?看,1TB SSD 不到 100 美元。四核笔记本电脑低于 400 美元。如果您试图通过编写一堆适用性极低的代码来最小化存储使用或 CPU 消耗以“省钱”或“节省时间”,我的建议是您既浪费 时间又浪费金钱。我再说一遍——一 TB 的存储成本与一小时的程序员时间相同。一台全新的计算机的成本与程序员浪费四个小时的时间相同。尽你所能最大限度地减少编码时间,而不是传统的 CPU 时间或磁盘空间优化目标,你要好得多。因此,我认为 UNIQUE 索引是低成本的解决方案。


推荐阅读