我有一个有5000行的表。有没有办法找出前100行使用了多少空间?
编辑我在互联网上找到了这个脚本:
WITH table_size AS
(SELECT owner, segment_name, SUM (BYTES) total_size
FROM dba_extents
WHERE segment_type = 'TABLE'
GROUP BY owner, segment_name)
SELECT table_name, avg_row_len, num_rows * avg_row_len actual_size_of_data,
b.total_size
FROM dba_tables a, table_size b
WHERE a.owner = UPPER ('&&ENTER_OWNER_NAME')
AND a.table_name = UPPER ('&&ENTER_TABLE_NAME')
AND a.owner = b.owner
AND a.table_name = b.segment_name;
我不知道它是否能达到预期的效果。它计算平均行长,然后将其乘以100。
Oracle通过将行打包到块中来将逻辑存储与物理存储区分开。因此,虽然这不是直截了当的,也不是准确的,但它是可能的。
您必须确定一行使用的字节总数(如果有一个或多个varchar2列,这将是有根据的猜测),然后根据块大小确定一个块中可以容纳多少行。Oracle总是分配一个完整的块,即使其中只有两个存储在字节上也是如此,因此总存储量将是块大小的一个因素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句