PostgreSQL 函数式索引使用注意 - 暨非immutable函数不适合索引的原因

本文探讨了PostgreSQL中函数式索引的使用,强调了使用immutable函数的重要性。由于表达式索引依赖于输入参数不变时结果恒定的特性,如果涉及的变量如商品原价变化,可能导致索引与实际数据不一致。文中通过商品和折扣表的例子,说明了原价变化时索引不更新的问题,提醒读者在创建函数索引时要注意函数的稳定性。
摘要由CSDN通过智能技术生成

标签

PostgreSQL , 表达式 , 函数稳定性 , immutable


背景

PostgreSQL支持表达式索引,但是表达式必须是immutable的,也即是当输入参数不变时,结果是永恒不变的。

因为当表达式涉及的变量不变时,索引本身不会变化。

给个例子,如果我们有一张表存储了商品价格,另一张表存储了商品折扣 ,如果我们想通过折扣后的价格范围搜索符合价格区间的商品ID,可以使用索引吗?

表达式索引,可以。但是前提是:输入一个商品ID时,商品原价永恒不变。

否则原价发生变化就可能出现索引内容与实际不一致的问题。

例子


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值