memsql 中非强制唯一与强制唯一
Unenforced Unique vs enforced Unique in memsql
我觉得这有点令人困惑。我正在使用 memsql 列存储。我试图了解是否有办法在特定键(例如 eventId)上强制执行重复。我找到了一些关于 Unenforced Unique 的文档,但我并不真正理解它的意图。
非强制唯一键的要点是一个提示:
An unenforced unique constraint is informational: the query planner may use the unenforced unique constraint as a hint to choose better query plans.
来自 https://docs.memsql.com/v6.8/concepts/unenforced-unique-constraints/。
遗憾的是,MemSQL 不支持(强制)列存储表的唯一约束。
MemSQL 现在支持版本 7+ 的唯一约束,但只能应用于单个列:
您的列存储 table 定义可以包含 metadata-only 非强制唯一键、single-column 散列键(可能是唯一的),以及全文键。您不能定义多个唯一键。
在多列上启用 UNIQUE 约束的一个技巧是使用由附加的多列组成的计算列,然后在其上应用 UNIQUE,这将间接对多列强制执行唯一性。
示例:
CREATE TABLE articles (
id INT UNSIGNED,
year int UNSIGNED,
title VARCHAR(200),
body TEXT,
SHARD KEY(title),
KEY (id) USING CLUSTERED COLUMNSTORE,
KEY (id) USING HASH,
UNIQUE KEY (title) USING HASH,
KEY (year) USING HASH);
我觉得这有点令人困惑。我正在使用 memsql 列存储。我试图了解是否有办法在特定键(例如 eventId)上强制执行重复。我找到了一些关于 Unenforced Unique 的文档,但我并不真正理解它的意图。
非强制唯一键的要点是一个提示:
An unenforced unique constraint is informational: the query planner may use the unenforced unique constraint as a hint to choose better query plans.
来自 https://docs.memsql.com/v6.8/concepts/unenforced-unique-constraints/。
遗憾的是,MemSQL 不支持(强制)列存储表的唯一约束。
MemSQL 现在支持版本 7+ 的唯一约束,但只能应用于单个列:
您的列存储 table 定义可以包含 metadata-only 非强制唯一键、single-column 散列键(可能是唯一的),以及全文键。您不能定义多个唯一键。
在多列上启用 UNIQUE 约束的一个技巧是使用由附加的多列组成的计算列,然后在其上应用 UNIQUE,这将间接对多列强制执行唯一性。
示例:
CREATE TABLE articles (
id INT UNSIGNED,
year int UNSIGNED,
title VARCHAR(200),
body TEXT,
SHARD KEY(title),
KEY (id) USING CLUSTERED COLUMNSTORE,
KEY (id) USING HASH,
UNIQUE KEY (title) USING HASH,
KEY (year) USING HASH);