PHP中pg_field_type()函数是否会引发额外的数据库通信?
PHP中pg_field_type()函数是否会引发额外的数据库通信?
简单说:不会,调用pg_field_type()不会触发额外的数据库通信,所有需要的元数据早就保存在PHP本地的结果集里了。
当你执行查询(比如用pg_query())拿到结果资源后,PHP在获取查询结果的同时,已经从数据库服务器拉取了完整的结果集元数据——其中就包含了每个字段的类型信息。
pg_field_type()做的只是从PHP内存里的这个结果集对象中提取对应的类型信息,完全是本地内存操作,不会再和数据库服务器建立新的通信,所以它属于PHP里“成本很低”的操作范畴。
这个行为是一贯的,因为PostgreSQL的查询协议在返回结果行数据的同时,会一并返回结果集的结构元数据(比如字段名、类型、长度等),PHP的PostgreSQL扩展会把这些信息缓存起来,后续像pg_field_name()、pg_field_size()这类字段信息查询函数,也都是直接读取本地缓存,不会发起新的数据库请求。
备注:内容来源于stack exchange,提问作者Meglio
相关产品推荐
相关产品推荐

