Indexing “火鸟”;索引“的密钥大小超出了实现限制”;如果索引是在活动工作期间创建的,则显示错误消息?

Indexing “火鸟”;索引“的密钥大小超出了实现限制”;如果索引是在活动工作期间创建的,则显示错误消息?,indexing,firebird,firebird1.5,Indexing,Firebird,Firebird1.5,我有Firebird数据库,并且在活动工作名称期间在varchar(30)字段上创建了索引(我设法完成并提交了create index语句,有时在工作期间不可能提交,即,除了与数据库的活动SYSDBA连接之外,还有其他连接)之后,我开始接收错误消息: Implementation limit exceeded key size exceed implementation restriction for index INDEX_NAME 我无法在我只有一个(SYSDBA)或只有几个非SYSDBA

我有Firebird数据库,并且在活动工作名称期间在varchar(30)字段上创建了索引(我设法完成并提交了
create index
语句,有时在工作期间不可能提交,即,除了与数据库的活动SYSDBA连接之外,还有其他连接)之后,我开始接收错误消息:

Implementation limit exceeded key size exceed implementation restriction for index INDEX_NAME
我无法在我只有一个(SYSDBA)或只有几个非SYSDBA连接的本地数据库上重现此类错误消息。此限制异常是否可能是由于在活动工作负载期间创建索引而导致的

当然,我知道,但非Unicode varchar(30)肯定足够小,可以有自己的索引,并且表只有3个其他整数或日期索引,因此-不可能达到实现限制


嗯,我使用的是Firebird 1.5(它已经被弃用了10年),但我想其他版本也可能有这种行为。

Firebird 2.0改变了情况,该版本的最大索引键大小从最大252字节增加到数据库页面大小的1/4。如果没有可复制的案例,或者至少没有必要的DDL,特别是索引中涉及的列的字符集和排序规则,就很难对实际问题得出任何结论,而且Firebird 1.5已经过时多年,现在确实是升级的时候了。但是,一些可能导致索引大小膨胀的因素:UNICODE_FSS(或UTF8)(字符计数x 3(或x4)),以及一些排序规则可能会导致更大的空间消耗。顺便说一句,指向embarcadero.com的链接是关于InterBase的,而不是Firebird的。尽管它们有共同的遗产,但不应将它们视为同一个数据库系统。