mysql 如何获取表中某个特定行的字节大小

olhwl3o2  于 2023-05-21  发布在  Mysql
关注(0)|答案(1)|浏览(176)

我已经创建了一个项目,我将提供几个商店的机会,发布他们的产品和收费的基础上,他们占用的存储兆字节。为此,我使用SQL数据库。我的问题是,如果“products”表具有以下列,我如何获得客户在数据库中占用的空间:“productId”,“customerId”,“productName”,“productPrice”?
我已经尝试过了,但它返回整个表的总大小,我想要的是获得某些行的大小,其中“customerId”等于所请求的。

SELECT (SUM(DATA_LENGTH) + SUM(INDEX_LENGTH)) AS 'bytes'
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'project' AND TABLE_NAME = 'products';

如果你有更好的主意来解决这个问题,我将不胜感激。

gijlo24d

gijlo24d1#

如果我们可以考虑所有行都是相同的大小,这可能会起作用:
其思想是计算每个客户的行数,除以总行数,然后将结果乘以总字节数。

with cte as (
  select count(1) as totalData, s.bytes
  from products
  inner join (
    SELECT (SUM(DATA_LENGTH) + SUM(INDEX_LENGTH)) AS 'bytes'
    FROM information_schema.TABLES
    WHERE TABLE_SCHEMA = 'project' and TABLE_NAME = 'products'
  ) as s on true
)
select customer_id, (count(1)/totalData)*c.bytes as totalBytes
from products
inner join cte c on true
group by customer_id

相关问题