如果
pg_field_type()
以任何方式调用数据库,其成本可能会很高。如果不是,那么它在 PHP 便宜的范围内就“便宜”了。
所以问题是,调用 pg_field_type() 是否会与数据库进行任何额外的通信,或者只是从 PHP 已经从数据库获取的结果中获取元数据?是或否,总是这样吗?为什么?
是的,当您第一次尝试获取类型名称时,会与数据库进行额外的通信(每个工作进程)。
PHP 的 pg 模块将查询整个
pg_type
表并缓存结果。
因此,如果您需要一种“便宜”的方法,请使用
pg_field_type_oid
并手动从 oid 转换为类型名称。