我正在尝试使用pg_stats
关系来了解PostgreSQL如何进行查询评估的更多信息。
我尝试在此处关注此页面:https://www.postgresql.org/docs/10/row-estimation-examples.html以计算我的查询的一些选择性。
当使用从获得的histogram_bounds
时
SELECT histogram_bounds
FROM pg_stats
WHERE tablename='<table_name>'
AND attname='<att_name>';
这里的att_name
是表table_name
中的数字类型的属性
返回值的类型是anyarray,尽管(在我的情况下(属性是一个整数,所以它是一个充满整数的anyarray。我发现关于这种类型的文档很少,但似乎无法使用简单的强制转换约定将其转换为可用类型。显然,它不支持普通数组选项。我想把它转换成一个int数组。
histogram_bounds[0]
错误:不能下标任何数组,因为它不是数组
并且不能强制转换
CAST(histogram_bounds as int[])
错误:无法将类型anyarray强制转换为integer[]
如有任何关于如何将此类型强制转换为int数组的帮助,我们将不胜感激。
我认为您可以将任何类型,甚至是anyarray
类型,强制转换为text
进行输出。该文本将具有整数列直方图的整数数组表示,因此我们可以随后将其转换为:
SELECT histogram_bounds::text::int[]
FROM pg_stats
WHERE tablename='<table_name>'
AND attname='<att_name>';