【发布时间】:2017-11-27 08:36:16
【问题描述】:
假设我有 1000 个结构完全相同的实体。例如所有实体都有三个字段:
String id;
String name;
int amount;
我还预计系统中每种类型的实体都会有大量的。
所以我现在有两种变体:
-
为每个实体创建单独的表,如下所示:
CREATE TABLE <SOME_ENTITY_NAME> ( id text PRIMARY KEY, name text, amount int ) -
我将只创建一个带有复合主键的表:
CREATE TABLE ALL_ENTITIES_TABLE ( entity_name text, id text, name text, amount int, PRIMARY KEY ((entity_name, id)) );
当然,只支持一张表更简单,但是性能呢?
那么,考虑到每种类型的实体将拥有数百万(可能是数十亿)条记录,问题是哪种变体在性能方面更好?
【问题讨论】:
-
你的访问模式是什么......无论如何,第二种方法要好得多......
WHERE entity_name='' and id=''将由第二张桌子有效处理......如果你有不同的用例......分享你的用例