假设我有一个具有已定义 ID 的决策基础节点:
@NodeEntity
public class Decision {
@Id
@Index(unique = true)
private Long id;
}
我定义了一个
UNIQUE INDEX on Decision.id
。
此外,我还有两个来自决策的节点:
@NodeEntity
public class Profile extends Decision {
}
@NodeEntity
public class Notification extends Decision{
}
让我们考虑一个场景,其中我的数据库中有
1000 Profiles
和 1 billion Notifications
。通过 Cypher 查询查询配置文件是否会受到 10 亿个通知节点的存在的显着影响,因为它们共享相同的公共标签“决策”?
我是否还应该在“Profile.id”和“Notification.id”上添加一个唯一索引,即使它们继承自“Decision”节点?
唯一性约束创建 RANGE 索引。 RANGE索引内部使用B+树算法,其复杂度为O(log n)。
1K 的log2
约为 10,1G 的 log2
约为 30。由您决定因子 3 是否足够重要以保证创建另一个索引。仅为 1K 节点创建额外索引不会占用太多存储空间,因此不必担心。您可能想尝试一下,看看是否值得。