B-tree index entries are usually quite small, because they only consist of the key value
and a ROWID. In index-organized tables, however, the B-tree index entries can be large,
because they consist of the entire row. This may destroy the dense clustering property

of the B-tree index.

B-TREE索引条目通常是比较小的,因为它的组成仅由主键值和ROWID。在IOT里面,

索引条目可能很大,因为它们是由整行组成的。这可能会损坏B-TREE索引的聚簇属性

Oracle provides the OVERFLOW clause to handle this problem. You can specify an


overflow tablespace so that, if necessary, a row can be divided into the following two


parts that are then stored in the index and in the overflow storage area segment,


respectively:

O提供了OVERFLOW语句去处理这个问题。你可以指定一个溢出表空间,如果需要一行可以

各自分成如下两部份去存储索引和溢出存储区域段:

■ The index entry, containing column values for all the primary key columns, a


physical rowid that points to the overflow part of the row, and optionally a few of


the nonkey columns

#索引条目包含所有主键列的列值,一个物理ROWID指向行的溢出段,和额外的一些

非主键列的值

■ The overflow part, containing column values for the remaining nonkey columns


With OVERFLOW, you can use two clauses, PCTTHRESHOLD and INCLUDING, to control


how Oracle determines whether a row should be stored in two parts and if so, at


which nonkey column to break the row. Using PCTTHRESHOLD, you can specify a


threshold value as a percentage of the block size. If all the nonkey column values can


be accommodated within the specified size limit, the row will not be broken into two


parts. Otherwise, starting with the first nonkey column that cannot be accommodated,


the rest of the nonkey columns are all stored in the row overflow segment for the table.


The INCLUDING clause lets you specify a column name so that any nonkey column,


appearing in the CREATE TABLE statement after that specified column, is stored in the


row overflow segment. Note that additional nonkey columns may sometimes need to


be stored in the overflow due to PCTTHRESHOLD-based limits.

#溢出段,包含剩余非主键列的值在溢出段,你可以使用语句,PCTTHRESHOLD和INCLUDING去

控制O决定一行是否存于这两部份中,在PCTTHRESHOLD将行断开。使用PCTTHRESHOLD,你可以

指定一个阈值作为一个块大小的百分比。如果所有的NONKEY列值可以在指定的限制大小里面容纳,那么行

将不会被分成两部份。否则,以非主键列开头的列不能被容纳的话,那么剩余的所有非主键列将全部存储在

行溢出段里。INCLUDING语句,你可以指定一个列的关于那些非主键列的名字,出现在CREATE TABLE 语句

后指定的列,将存储在行溢出段。注意是额外的非主键列也可能有时需要存储在溢出段由于PCTTHRESHOLD

值的限制。