解析Oracle索引容量远超表!(oracle索引比表大)

这是一个说明Oracle索引容量远超表的例子,以下是具体的代码:

Oracle中索引的容量实际上远超表。所以,如果你运行以下SQL查询:

“`SQL

SELECT SEGMENT_NAME, BYTES

FROM USER_SEGEMENTS T

WHERE T.SEGMENT_TYPE = ‘INDEX’

And T.SEGMENT_NAME =’MY_INDEX’


它会告诉你一个索引的容量在千兆字节或更多。这里让我们看看一个具体的示例:

假设你有一个名为EMPLOYEE_TAB的表,它只有包含15条记录,每条记录只有80字节。为了让查询更快,你创建了一个索引(let’s name it MY_INDEX),按照EMPLOYEE_ID做排序。

你可以运行以下SQL以测量MY_INDEX的容量:

```SQL
SELECT SEGMENT_NAME, BYTES
FROM USER_SEGEMENTS T
WHERE T.SEGMENT_TYPE = 'INDEX'
And T.SEGMENT_NAME ='MY_INDEX'

最终,你会发现MY_INDEX的容量高达1,536字节,超过表EMPLOYEE_TAB的容量(15*80=1200字节)。

这不大可怕,毕竟索引是必要的,而且它的容量反映索引元素(比如:索引键值的长度)。它的容量也受到一些功能因素的影响:比如表中的字段是将索引信息存储在表里还是独立的索引文件里。

也有可能表中有10000行,而MY_INDEX容量就只有1300字节,但是这是因为Oracle限制索引最大字节数是1300字节,所以即使表中有10000行,也不会超过这个大小。

总而言之,Oracle索引容量远超表,这是完全正常的,但是你要注意它不要影响你的存储,如果索引容量总是过多,可以考虑删除它或者调整表的结构获得更优的结果。


数据运维技术 » 解析Oracle索引容量远超表!(oracle索引比表大)