-2

我有一张名为 HUGETABLE 的表。我想在某些 Select where 条件下获取 HUGETABLE 中一组记录所消耗的大小。我目前正在使用以下查询来获取 KBS 中的表大小,除此之外还有其他改进的查询吗?:

SELECT SUM(LENGTH(IFNULL(translation_logs.GUID,0))+
LENGTH(IFNULL(HUGETABLE.ID,0))+
LENGTH(IFNULL(HUGETABLE.SEQUENCENO,0))+
LENGTH(IFNULL(HUGETABLE.BID,0))+
LENGTH(IFNULL(HUGETABLE.TID,0))+
LENGTH(IFNULL(HUGETABLE.TABLENAME,0))+
LENGTH(IFNULL(HUGETABLE.MODIFIEDDATE,0))+
LENGTH(IFNULL(HUGETABLE.MODIFIEDBY,0))+
LENGTH(IFNULL(HUGETABLE.UPDATEXML,0))+
LENGTH(IFNULL(HUGETABLE.BESTIDENTIFIERVALUE,0)))/1024  AS "Total Size in KB" 
FROM HUGETABLE
WHERE TID = 'myvalue';

TID 是索引字段

4

1 回答 1

0

您可以通过每个字段的最大大小进行检查,而不是进行大量查询。如果您有 VARCHAR,这会有点困难,在这种情况下,您必须进行选择。

根据这个文档页面,一个 INT 需要 4 个字节,一个 DATE 需要 3 个字节等。所以使用 5 个 INT(您的 5 个第一个字段)、1 个 DATE 和 4 个 VARCHAR(我猜不确定您的表结构),您只需必须做类似的事情:

 SELECT 4*5 + 1 * 3 + (LENGTH(TABLENAME)+2) + (LENGTH(MODIFYBY)+2) + ...
 FROM HUGETABLE
 WHERE TID = 'myvalue';

如果您还想占用索引使用的空间,那就有点困难了,而且我对此知之甚少。

于 2013-08-02T07:17:25.657 回答