gpt4 book ai didi

postgresql - 如何获得 postgres 中所有字符变化列的最大 char_length

转载 作者:行者123 更新时间:2023-11-29 12:41:33 27 4
gpt4 key购买 nike

我想知道一种高效的方法来查找 postgres 数据库中不同字符列的上限。

目前,我正在使用一个查询来构建一个查询,以粗暴的方式执行此操作。

select 
'select ''' || table_name || ''','''
|| column_name || '''' || ', max(char_length(' || column_name
|| ')) from ' || table_name || ' UNION ALL' as query
from information_schema.columns
where table_schema = 'public'
and data_type in ('character varying','text')
order by table_name ;

索引元表中是否存在表示max(char_length(column_name))的信息?

最佳答案

MVCC并发模型使得服务器无法像这样准确地跟踪聚合统计信息(这就是为什么即使 SELECT COUNT(*) 也涉及全表扫描)。 pg_stats 中有一个平均 宽度,但它基于随机的记录样本,并且不会实时更新。

我可以建议的唯一潜在优化 - 取决于您计划如何处理这些信息,和/或您可以对数据做出哪些假设 - 是使用 octet_length() 而不是 char_length()。这报告字节数而不是字符数,这可能适合也可能不适合您的需要,但它的优点是直接从记录头读取字节数,而不是必须扫描每个字符串中的每个字符以查找多字节序列。如果任何值大到足以成为 TOAST,性能差异将更加明显。编辑。 (请注意,如果您使用的是单字节 character encoding ,则 char_length() 已经执行了此优化。)

关于postgresql - 如何获得 postgres 中所有字符变化列的最大 char_length,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47818945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com