Ank*_*mba 8 postgresql triggers plpgsql
我是Postgres触发器的新手.我在www.postgresql.org上看到了一个触发器的例子,我不明白LANGUAGE plpgsql VOLATILE COST 100;
触发器函数的结尾是什么.
这条线有什么用?
我看到了一个与此相关的问题"LANGUAGE'plpgsql'VOLATILE"是什么意思?
但这只是关于volatile
什么cost 100
,language
在这一行?
小智 9
LANGUAGE plpgsql VOLATILE COST 100;
LANGUAGE:用于在PostgreSQL中创建存储过程的编程语言.这是plpgsql.
(在进入volatile和cost之前,首先需要了解一些事情......'查询优化器',我们正在为此提供这些信息.查询优化器用于确定执行给定查询的最有效方法.)
VOLATILE:-In PostgreSQL每个函数都有一个波动率分类,volatile是波动率分类之一.VOLATILE函数可以执行任何操作,包括修改数据库.它是默认值,因此可以省略.
成本100: - COST完全独立于VOLATILE.它声明结果的每行成本,查询计划程序使用它来查找最便宜的计划.默认值为COST 100,也可以省略.最好将其保留为默认值.
在这些语句中,我们提供有关查询优化器的函数的信息.在这里......使用什么语言,函数的波动性是什么,结果的每行成本是多少.
您可以在Postgres中使用更多编程语言进行存储过程编程.所以强制性的attribut LANGUAGE指定使用的语言 - plpgsql,sql,plpython,plperl,...
这些函数是优化器的黑盒子 - 优化器不知道里面是什么以及这段代码有多贵.优化器可以选择如何计算SQL查询的方式,它可以优先选择或最小化某些功能的评估.优选低成本的功能,并且高成本的功能受到惩罚.COST是+/-值,功能如何昂贵(功能如何快或慢).几乎所有内置函数都有COST 1,pgAdmin使用COST 100作为自定义函数 - 它显示了一个期望值,因此plpgsql函数将比内置函数慢.COST不是线性的 - 所以它并不意味着plpgsql函数比内置函数慢100倍.
归档时间: |
|
查看次数: |
10443 次 |
最近记录: |