在PolarDB想查询drds的表大小没数据,加一个子查询就出结果了,怎么回事?select sum(s.DATA_LENGTH) from INFORMATION_SCHEMA.TABLES s;
SELECT * FROM( SELECT sum( s.DATA_LENGTH ) FROM INFORMATION_SCHEMA.TABLES s ) a;
在PolarDB中查询表大小时,直接使用SELECT sum(s.DATA_LENGTH) FROM INFORMATION_SCHEMA.TABLES s;可能不会返回预期结果,而当你通过子查询SELECT * FROM( SELECT sum( s.DATA_LENGTH ) FROM INFORMATION_SCHEMA.TABLES s ) a;时却能获得数据,这种情况通常与查询优化和数据统计信息的收集有关。可参考官方文档
您遇到的情况可能与查询的执行环境或数据访问权限有关。在PolarDB与DRDS环境下,直接执行 SELECT sum(s.DATA_LENGTH) FROM INFORMATION_SCHEMA.TABLES s; 未能获取数据,可能是因为查询优化器处理方式或特定配置影响了查询结果的返回。而当您包裹在一个子查询中,如 SELECT * FROM (SELECT sum( s.DATA_LENGTH ) FROM INFORMATION_SCHEMA.TABLES s) a;,这样的操作在某些情况下可以改变查询的上下文,或者避免了某些特定的优化逻辑,从而能够成功返回数据。
PolarDB-X 对于复杂查询和子查询的支持具有详细的规定,具体支持的子查询类型如比较子查询、存在性子查询等,请参考官方文档关于支持的子查询的部分
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。