ORA-01450: 超过键值长度 处理一例

上一篇 / 下一篇  2008-06-03 11:44:40

这里的发生的例外情况为在为一个栏位创建索引时,出现上述异常,索引如下:

CREATE INDEX PPEMS.IDX_SYS_STD_LANG_RES_TEXT ON PPEMS.SYS_STD_LANGUAGE_RESOURCE
(TEXT)
TABLESPACE LOG_IDX

PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
            INITIAL          1M
            NEXT             5M
            MINEXTENTS       1
            MAXEXTENTS       2147483645
            PCTINCREASE      0
            FREELISTS        1
            FREELIST GROUPS  1
            BUFFER_POOL      DEFAULT
           )
NOPARALLEL;

开始以为是索引的名称太长,后来怎么修改都无济如是。

经下列研究发现:

SQL>   create   table   test3(a   varchar2(4000),   b   varchar2(4000));  
   
  表已创建。  
   
  SQL>   create   index   ix_test3_ab   on   test3(a,b);  
  create   index   ix_test3_ab   on   test3(a,b)  
                                                          *  
  ERROR   位于第   1   行:  
  ORA-01450:   超出最大的关键字长度   (6398)  
   
  SQL>   DROP   TABLE   TEST3   CASCADE   CONSTRAINTS  
   
  表已丢弃。  
   
  SQL>   create   table   test3(a   varchar2(400),   b   varchar2(400));  
   
  表已创建。  
   
  SQL>   create   index   ix_test3_ab   on   test3(a,b);  
   
  索引已创建。  
   
  看出来了吧?你的两个字段建立的复合索引,单个索引项最大可能是4000+4000共计8000个字节,有可能超过6398这个限制,因此索引无法创建。  
   
  如果你没有那么多内容要存储的话,就把字段定义小点。   
 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-07  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 68
  • 日志数: 7
  • 建立时间: 2008-05-17
  • 更新时间: 2008-08-20

RSS订阅

Open Toolbar