postgresql - 获取索引列总大小
问题描述
要获取主键列的总大小(不是索引大小本身,因此SELECT pg_table_size(indexrelid) FROM pg_index WHERE ..
在这种情况下不是解决方案),我使用这样的动态查询:
DO $$
DECLARE
v_query TEXT;
v_result BIGINT;
BEGIN
SELECT 'SELECT COALESCE( SUM( pg_column_size('||string_agg(a.attname::TEXT, ')+pg_column_size(')||') ), 0) FROM '||'public.my_test'
FROM pg_index i
JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)
WHERE i.indrelid = (SELECT 'public.my_test'::regclass::oid)
AND i.indisprimary
INTO v_query;
EXECUTE v_query INTO v_result;
raise notice '%', v_result;
END; $$ LANGUAGE PLPGSQL
有没有办法做同样的事情,没有 PLPGSQL/动态查询,但直接使用 SQL?
解决方案
推荐阅读
- javascript - 如何在数据库中获取选项值
- c++ - 是我错误地使用了 Xcode 还是我错误地编写了程序?
- php - 这是我需要从 SQL 转换为 CodeIgniter 的查询:
- go - 如何在 boxfuse 图像(golang 应用程序)中包含配置文件?
- javascript - Javascript 不等待 forEach 循环
- django - Django:提交表单后如何重定向到带有分页的 ListView?
- java - 读取用户输入到列表,根据元素值排序,并按顺序返回数组中的列表元素 - Java
- javascript - 如何在不重新渲染的情况下更新 R 闪亮中的绘图小部件的显示/隐藏痕迹以响应操作按钮
- javascript - 组件挂载时将 redux 状态移植到组件状态(无需 GET 请求)
- powershell - 如何通过powershell中的扩展名列表分隔整个文件夹内容