neo4j 各种索引,提速

Neo4j CQL-索引

索引是一种数据结构,可以提高数据库数据检索的速度。

在 Neo4j 中,你可以给有标签的点的任何属性创建索引。一旦你创建了一个索引,Neo4j 将会管理它,在数据更新时保持最新的索引。

和关系数据库一样,Neo4j同样可以创建索引来加快查找速度。

在关系数据库中创建索引需要索引字段和指向记录的指针,通过索引可以快速查找到表中的行。

在Neo4j中,其索引是通过属性来创建,便于快速查找节点或者关系。  **【所以为了提速,首先得保证节点有很多属性】**

Neo4j SQL支持节点或关系属性上的索引,以提高应用程序的性能。

·CREATE INDEX 创建索引

·DROP INDEX 删除索引


1.给节点的属性名创建索引/删除索引  节点{...属性...}

先复习一下创建节点的语法:

CREATE (:: ... ... :)

CREATE (:: ... ... :

    {:

    ... ... ... ....

    :}

)

给某类标签节点的某个属性名创建索引:

CREATE INDEX ON : ()

删除某类标签节点的每个属性名的索引:

DROP INDEX ON : ()


neo4j 各种索引,提速_第1张图片
给Concept类节点的name属性创建索引
neo4j 各种索引,提速_第2张图片
删除索引



2.关于关系的属性名创建索引/删除索引  关系{...属性...}

先复习一下创建关系的语法:

2.1)单个标签到关系

CREATE (:) - [(:)] -> (:)

eg: CREATE (p1:Person) - [r1:LIKES] -> (p2:Book)

eg:CREATE(p1:Person {name:"布口袋_天晴了",school:'CQUPT'}) - [r:LIKES] -> (p2:Book {name:"认知突围",author:"蔡垒磊"})

2.2)多个标签到关系

CREATE (::: ... ...) - [(:)] -> (::: ... ...)

eg:CREATE (p1:Person:Student) - [r1:LIKES] -> (p2:Book)

eg:CREATE(p1:Person:Student {name:"布口袋_天晴了",school:'CQUPT'}) - [r:LIKES {tag:'喜欢'}] -> (p2:Book {name:"认知突围",author:"蔡垒磊"})


Neo4j索引对象可分为:基于relationship的索引和基于node的索引。neo4j本身即是关于relationship的索引实现,所以不用对关系的属性名创建索引。 所以一般说创建索引,都是说的针对节点的属性创建索引。

所以通过查找关系,来获取节点会比直接在整个图中查找节点的速度快。




3.查看已经对Neo4j数据库创建了多少索引

在Neo4j浏览器中,可以使用:schema命令查看所有索引和约束。

:schema

neo4j 各种索引,提速_第3张图片


4.索引是不是必要的???

当 Neo4j 创建索引时,它会在数据库中创建冗余的副本,因此使用索引会占用更多的硬盘空间并减慢写入速度。

因此在决定索引哪些数据时你需要进行一些权衡。

一般来说当你知道某些节点数量很多时,创建索引是个不错的主意。或者你发现查询时间太长可以尝试通过添加索引来解决。

你可能感兴趣的:(neo4j 各种索引,提速)