如何在Memgraph及GQLAlchemy定义的类中创建属性索引?能否仅创建标签索引?
在Memgraph中创建索引的方法
1. 原生Cypher操作索引
属性索引
- 单标签单属性索引:执行
CREATE INDEX ON :Label(attribute);,例如CREATE INDEX ON :User(email); - 单标签多属性复合索引:执行
CREATE INDEX ON :Label(attr1, attr2);,例如CREATE INDEX ON :User(name, age); - 查看所有索引:
SHOW INDEXES; - 删除索引:
DROP INDEX ON :Label(attribute);
仅Label索引
可以创建只针对标签的索引,不需要指定属性:
CREATE INDEX ON :Label;
比如给User标签创建纯Label索引:CREATE INDEX ON :User;
2. 使用GQLAlchemy为Node/Relationship类创建索引
Node类索引
在定义Node子类时,通过字段参数或类属性指定索引:
from gqlalchemy import Node, Field class User(Node): # 给单个属性加索引(支持unique约束) email: str = Field(index=True, unique=True) age: int = Field(index=True) # 定义多属性复合索引 __indices__ = [ ("name", "age") ] # 仅创建Label索引 __label_index__ = True
当你将类与Memgraph数据库建立连接(或调用User.save(db))时,GQLAlchemy会自动在数据库中创建对应的索引。
Relationship类索引
和Node类用法一致,在Relationship子类中标记需要索引的属性:
from gqlalchemy import Relationship, Field class Follows(Relationship): # 单属性索引 since: int = Field(index=True) # 复合索引 __indices__ = [ ("status", "since") ]
内容的提问来源于stack exchange,提问作者MPesi
相关产品推荐
相关产品推荐

