0

注意:正在使用 m4,因此扩展了以“_”为前缀的字符串(m4 是类似于 c 预处理器的宏预处理器)。

我的风格:

CREATE TYPE UrlPair AS (                                                      
    HostName        varchar( _LIMIT_HOSTNAME ),                               
    ScriptName      varchar( _LIMIT_SCRIPTNAME )                              
);

用于

CREATE TABLE SymbolTable_UrlPair (
    Symbol          _BIG_SYMBOL_SERIAL_TYPE     PRIMARY KEY,
    UrlPair         UrlPair                     
);

有索引

CREATE INDEX SymbolTable_UrlPair_UrlPair 
    ON SymbolTable_UrlPair USING hash (UrlPair);

给出:

psql:script:32: ERROR:  data type urlpair has no default operator class 
for access method "hash"

HINT:  You must specify an operator class for the index or define a default 
operator class for the data type.

问题

理想情况下,我希望引擎连接字符串并将其用于哈希。不过,我并不挑剔。有人可以告诉我为访问方法哈希声明这个“操作员类”的语法吗?

我本来希望用户定义的类型有一些默认的散列行为。我真的更愿意保留该类型——即,我不想扩展它,因为我可能会定义一些更复杂的 UDT。

4

1 回答 1

1

散列和散列索引是两个不同的东西。哈希索引不支持多列索引,这可能是问题所在,您的 UrlPair 类型是多值。

Btree-index 有什么问题?有什么问题需要解决?

于 2010-03-06T16:50:50.530 回答