注意:正在使用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。
答案 0 :(得分:1)
哈希和哈希索引是两回事。散列索引不支持多列索引,这可能是问题,您的类型UrlPair是多值。
Btree指数有什么问题?有什么问题需要解决?