开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

在PolarDB想查询drds的表大小没数据,加一个子查询就出结果了,怎么回事?

在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;

展开
收起
三分钟热度的鱼 2024-05-03 17:43:01 55 0
2 条回答
写回答
取消 提交回答
  • 在PolarDB中查询表大小时,直接使用SELECT sum(s.DATA_LENGTH) FROM INFORMATION_SCHEMA.TABLES s;可能不会返回预期结果,而当你通过子查询SELECT * FROM( SELECT sum( s.DATA_LENGTH ) FROM INFORMATION_SCHEMA.TABLES s ) a;时却能获得数据,这种情况通常与查询优化和数据统计信息的收集有关。可参考官方文档
    image.png

    2024-07-03 10:22:30
    赞同 展开评论 打赏
  • 您遇到的情况可能与查询的执行环境或数据访问权限有关。在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 对于复杂查询和子查询的支持具有详细的规定,具体支持的子查询类型如比较子查询、存在性子查询等,请参考官方文档关于支持的子查询的部分
    image.png

    2024-06-19 15:40:49
    赞同 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。

相关产品

  • 云原生分布式数据库 PolarDB-X
  • 相关电子书

    更多
    PolarDB-X分布式数据库解决方案 立即下载
    PolarDB-X 2.0 全局 Binlog 与备份恢复能 立即下载
    分布式数据库DRDS全新升级 立即下载