博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL Oracle 兼容性之 - PL/SQL DETERMINISTIC 与PG函数稳定性(immutable, stable, volatile)...
阅读量:6936 次
发布时间:2019-06-27

本文共 862 字,大约阅读时间需要 2 分钟。

标签

PostgreSQL , Oracle , 函数稳定性 , stable , immutable , volatile , DETERMINISTIC


背景

Oracle创建pl/sql函数时,有一个参数DETERMINISTIC,含义时只要输入的参数一样,返回的结果一定一样。

DETERMINISTIC Clause

Specify DETERMINISTIC to indicate that the function returns the same result value whenever it is called with the same values for its arguments.
CREATE OR REPLACE FUNCTION text_length(a CLOB)      RETURN NUMBER DETERMINISTIC IS  BEGIN     RETURN DBMS_LOB.GETLENGTH(a);  END;

在PostgreSQL中,称之为函数的稳定性参数

在PG中,函数稳定性分为三档:

immutable,超级稳定,任何时候调用,只要函数的参数不变结果就不变。如果参数为常量或者无参数,在生成执行计划时,直接将这类函数替换为常量。

stable,稳定,在一个事务中调用时,只要函数的参数不变结果就不变。

volatile,不稳定。

函数的稳定性会影响数据库的一些行为:

1、绑定变量,immutable函数(包含常量参数或不包含参数时)计算一次。stable函数每次bind的时候要重算。

2、生成执行计划,stable, immutable函数作为WHERE条件时,可以被用于索引AM。(即允许采用索引优化)

3、排除分区表不需要访问的分区,stable, immutable函数作为WHERE条件时,可用于过滤不需要访问的子表。

4、是否可用于创建索引,只有immutable函数或操作符,可以用于创建表达式索引。

等。

详细介绍见末尾文档。

参考

转载地址:http://stbnl.baihongyu.com/

你可能感兴趣的文章
Spring3.1 Cache注解
查看>>
c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
查看>>
linux 基础入门一
查看>>
mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法
查看>>
java类初始化顺序-阿里笔试题
查看>>
ExecutorService线程池
查看>>
避免shell脚本SQL语句中 *输出时转义
查看>>
nagios监控远端主机
查看>>
克隆centos的vm虚拟机
查看>>
gcode类库的实现
查看>>
二十年后的回眸(9)——十年著书路
查看>>
看完这些干货帖,大数据产品从入门到精通
查看>>
Alibaba Cluster Data 开放下载:270GB 数据揭秘你不知道的阿里巴巴数据中心
查看>>
GitOps:Kubernetes多集群环境下的高效CICD实践
查看>>
KVM Bonding Vlan Bridge功能测试
查看>>
我的友情链接
查看>>
把握数据库发展趋势 DBA应如何避免“踩坑”?
查看>>
Knative 核心概念介绍:Build、Serving 和 Eventing 三大核心组件
查看>>
P2V实现VMware Workstation 虚拟机到ESXi主机
查看>>
OpenGL入门学习[七]
查看>>