标签

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函数或操作符,可以用于创建表达式索引。

等。

详细介绍见末尾文档。

参考

https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5009.htm

http://www.dba-oracle.com/plsql/t_plsql_deterministic.htm

《PostgreSQL 函数稳定性与constraint_excluded分区表逻辑推理过滤的CASE》

《函数稳定性讲解 - retalk PostgreSQL function's [ volatile|stable|immutable ]》

《函数稳定性讲解 - 函数索引思考, pay attention to function index used in PostgreSQL》

《函数稳定性讲解 - Thinking PostgreSQL Function's Volatility Categories》

PostgreSQL Oracle 兼容性之 - PL/SQL DETERMINISTIC 与PG函数稳定性(immutable, stable, volatile)...相关推荐

  1. PostgreSQL Oracle 兼容性 之 - PL/SQL record, table类型定义

    背景 Oracle PL/SQL是非常强大的一门SQL编程语言,许多Oracle用户也使用它来处理一些要求延迟低且数据一致性或可靠性要求很高的业务逻辑. PostgreSQL也有一门非常高级的内置SQ ...

  2. PostgreSQL Oracle 兼容性之 - PL/SQL FORALL, BULK COLLECT

    Oracle PL/SQL 开发的童鞋,一定对O家的bulk批量处理的性能很是赞赏吧. 但是PostgreSQL用户请不要垂涎,作为学院派和工业界的一颗璀璨明珠. 开源数据库PostgreSQL,也有 ...

  3. PostgreSQL Oracle兼容性之 - plpgsql 自治事务(autonomous_transaction)补丁

    PostgreSQL Oracle兼容性之 - plpgsql 自治事务(autonomous_transaction)补丁 作者 digoal 日期 2016-11-04 标签 PostgreSQL ...

  4. oracle输入数字类型吗,PL/SQL Number数字类型函数

    PL/SQL Number数字类型函数 更新时间:2007年03月21日 00:00:00   作者: ABS(x) 函数,此函数用来返回一个数的绝对值. ACOS(x)函数,返回X的反余弦值.X范围 ...

  5. Oracle Study之--PL/SQL Developer软件错误

    Oracle Study之--PL/SQL Developer软件错误 博文在51cto和CSDN同时开通 系统环境: 操作系统: Windows  XP(64) 软件:          PL/SQ ...

  6. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  7. 【学亮IT手记】oracle远程连接工具PL/SQL Developer的安装使用教程

    [学亮IT手记]oracle远程连接工具PL/SQL Developer的安装使用教程 客户端远程连接oracle,可以使用oracle自带的连接工具sqlplus,instanceclient_12 ...

  8. Windows 7 下安装 Oracle 数据库和 PL/SQL Developer

    win7下无论是32bits还是64bits,建议只安装oracle 11g 32bits,然后直接安装pl/sql developer,不需要额外的配置,就可以通过pl/sql developer来 ...

  9. 免安装Oracle客户端使用PL/SQL连接Oracle

    免安装Oracle客户端使用PL/SQL连接Oracle       大家都知道,用PL/SQL连接Oracle,是需要安装Oracle客户端软件的.有没要想过不安装Oracle客户端直接连接Orac ...

最新文章

  1. rpm、yum、编译安装轻松管理centos7程序包
  2. 【数据竞赛】Kaggle实战之特征工程篇-20大文本特征(下)
  3. Show Attend and Tell的词表
  4. 一分钟了解:物联网在医疗领域的应用(视频)
  5. 简单参数让谷歌Chrome浏览器单进程运行
  6. 2017最新nginx+keepalived+centos7安装配置过程
  7. java redis jar_Java使用Redis
  8. 《疯狂的站长》读后感2
  9. Centos6 安装可视化界面
  10. 安装虚拟机报错 This kernel requires an X86-64 CPU,but only detected an i686 CPU
  11. 计算机的发展是小报,电脑小报作品展示评价与交流.ppt
  12. python天天向上的力量实验报告_Python练习11:天天向上的力量
  13. Hibernate5相关特性参考
  14. matlab 图像二值化 后0、1像素的个数统计
  15. 国家利息中的等额本息和等额本金计算算法
  16. 联想电脑一开机出现Checking Media Presence……
  17. Elasticsearch:Rank feature query - 排名功能查询
  18. 561.Array Partition I--Python
  19. input输入框,正则格式化手机号(344)
  20. NBIOT模块 BC20 OPENCPU GPS定位

热门文章

  1. python字符串用android,通过s从android客户端向python服务器发送字符串
  2. MacBookPro M1 13寸开箱体验
  3. showdoc windows 搭建_Windows 搭建在线文档工具showdoc工具
  4. php simplexml 遍历,php下使用SimpleXML 处理XML 文件
  5. java hashmap 初始化赋值_HashMap引用传递,对象直接赋值,修改的是同一个对象,new HashMap「」(Map)才是生成新的对象...
  6. Python2安装教程(以最终版本Python2.7.18为例)
  7. 【 Verilog HDL 】case, casez, casex 之干货总结
  8. 解决Adobe Reader安装错误150120
  9. 解读ADC采样芯片(EV10AQ190A)的采样(工作)模式(双通道模式)
  10. 跟着“路线图”,我们一起遨游机器学习的世界!