![执行 SELECT 而不是删除时,postgres 删除约束是否会影响性能?](https://linux22.com/image/707553/%E6%89%A7%E8%A1%8C%20SELECT%20%E8%80%8C%E4%B8%8D%E6%98%AF%E5%88%A0%E9%99%A4%E6%97%B6%EF%BC%8Cpostgres%20%E5%88%A0%E9%99%A4%E7%BA%A6%E6%9D%9F%E6%98%AF%E5%90%A6%E4%BC%9A%E5%BD%B1%E5%93%8D%E6%80%A7%E8%83%BD%EF%BC%9F.png)
例如,如果我设置了 ON DELETE CASCADE,它会以某种方式影响删除命令之外的性能吗?还是只会影响删除时的性能?
更重要的是 - 如果我设置为在删除时不执行任何操作(例如没有删除约束),那么从该表中选择时,postgres 是否会进行任何特殊验证,从而影响性能,或者我是否只冒着获取损坏数据的风险?
谢谢!
答案1
肯定不会影响SELECT
。
它可以影响父表(被引用表)上的UPDATE
和,以及引用方上的和。DELETE
INSERT
UPDATE
DO NOTHING
并不意味着“忽略此约束”。这是强制的。请参阅手册。拼写是 SQL 标准的怪异之处。