我有一个包含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乘以100.
答案 0 :(得分:2)
Oracle通过将行打包成块来将逻辑存储与物理存储分开。因此,虽然它不是直截了当的,但也不准确,但这是可能的。
您必须确定行使用的字节总和(如果您有一个或多个varchar2列,这将是一个有根据的猜测)然后,根据块大小,确定块中适合的行数。 Oracle总是分配一个完整的块,即使它只有两个存储字节,因此总存储量将是块大小的一个因素。