Navicat for PostgreSQL 是一款操作简便的图形化数据库管理软件,具备强大的SQL编辑功能,支持查询编写、函数创建与执行,同时提供高效的数据编辑工具,便于用户灵活管理数据。本文将由官方渠道深入讲解该工具中关于函数的高级设置与特性,帮助用户全面掌握其进阶应用,提升数据库操作效率与开发体验。
1、 函数的所有者,需注意仅支持 PostgreSQL 8.0 及更高版本。
2、 函数所使用的语言名称,如SQL、C、内部语言或自定义过程语言,为兼容旧版本,名称可能被单引号包围。
3、 挥发性用于指示函数性能特征,最多只能选择一项。若未指定,则默认为VOLATILE。
4、 函数具有不可变特性,即执行过程中不会更改数据库内容,且在输入参数相同的情况下始终返回一致结果。该函数不依赖参数列表以外的信息,也不进行数据库查询或其他外部访问。启用此选项后,所有常量参数的函数调用可被直接替换为对应的结果值,从而提升执行效率与优化性能。
5、 稳定函数不会修改数据库,在对单表进行扫描时,对于相同的输入参数总能返回一致的结果。然而,其返回值可能受数据库查询结果、参数变量(如当前时区)等因素影响,从而在不同语句中产生变化。需注意的是,像 current_timestamp 这类函数虽依赖外部状态,但因其在事务执行期间保持不变,故也被归为稳定类别。
6、 VOLATILE表示函数的值在一次表扫描过程中可能发生改变,因此无法进行优化。大多数数据库函数不属于此类,仅有少数属于易变函数,例如random()、currval()和timeofday()。需要注意的是,任何带有副作用的函数都必须被标记为易变,即便其返回结果是确定的,以避免因优化而减少实际调用次数,如setval()即是一例。
7、 函数执行时采用创建者权限,确保操作安全可控。
8、 返回集指函数输出多个项目组成的集合,而非单一结果。
9、 严格模式下,函数在参数为 null 时始终返回 null。若启用该设定,一旦传入 null 参数,函数将不会执行,而是直接默认返回 null 结果。
10、 预计消耗:以正数形式表示函数执行时的资源消耗,单位为 cpu_operator_cost。若函数返回结果集,则该值代表每列输出的消耗量。未明确指定时,C语言和内部函数默认消耗为1,其他语言默认为100。数值越大,查询规划器越倾向于减少对该函数的调用频率,以优化执行效率。此功能仅适用于 PostgreSQL 8.3 及后续版本,早期版本不支持该特性。合理设置有助于提升查询性能与资源利用率。
11、 估算行数:使用正数值预估函数返回的行数,仅适用于声明为返回结果集的函数,且仅支持 PostgreSQL 8.3 及更高版本。
12、 配置参数在函数执行时设为指定值,退出时恢复原值,仅适用于 PostgreSQL 8.3 及更高版本。
评论
更多评论