解析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的容量:
```SQLSELECT SEGMENT_NAME, BYTES
FROM USER_SEGEMENTS TWHERE 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索引容量远超表,这是完全正常的,但是你要注意它不要影响你的存储,如果索引容量总是过多,可以考虑删除它或者调整表的结构获得更优的结果。