我的表使用UUID作为主键并将它们作为CHAR(36)存储在Oracle数据库中。大多数表包含可以使用任何语言的NVARCHAR列。我想在这些列上支持自然语言排序,并通过在oracle会话上设置NLS_SORT和NLS_COMP(通过ALTER SESSION)来实现。我遇到的问题是,oracle不会使用UUID列上的二进制索引,并始终执行全表扫描。使用UUID和Oracle的NLS_COMP&NLS_SORT设置
有没有办法在不丢失二进制索引的情况下获得整理效果?我找到的一个解决方案是使用RAW(16)来表示UUID,在这种情况下,Oracle将使用二进制索引,而不管NLS sort/comp如何。但我希望有更好的选择。
有什么建议吗?
我只对一种语言进行排序(不混合)。该语言在安装应用程序时设置,以后不能更改。 – mahdouch 2011-03-02 18:36:24