美文网首页图数据库Neo4j
neo4j 各种索引,提速

neo4j 各种索引,提速

作者: 布口袋_天晴了 | 来源:发表于2018-08-24 23:31 被阅读1536次

Neo4j CQL-索引

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

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

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

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

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

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

·CREATE INDEX 创建索引

·DROP INDEX 删除索引

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

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

CREATE (<node-name>:<label-name1>:<label-name2> ... ... :<label-namen>)

CREATE (<node-name>:<label-name1>:<label-name2> ... ... :<label-namen>

    {<Property1-name>:<Property1-Value>

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

    <Propertyn-name>:<Propertyn-Value>}

)

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

CREATE INDEX ON : <label_name> (<property>)

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

DROP INDEX ON : <label_name> (<property>)

给Concept类节点的name属性创建索引 删除索引

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

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

2.1)单个标签到关系

CREATE (<node1-name>:<label1-name>) - [(<relationship-name>:<relationship-label-name>)] -> (<node2-name>:<label2-name>)

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

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

2.2)多个标签到关系

CREATE (<node1-name>:<node1-label-name1>:<node1-label-name2>: ... ...) - [(<relationship-name>:<relationship-label-name>)] -> (<node2-name>:<node2-label-name1>:<node2-label-name2>: ... ...)

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

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

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

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

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

相关文章

  • neo4j 各种索引,提速

    Neo4jCQL-索引 索引是一种数据结构,可以提高数据库数据检索的速度。 在 Neo4j 中,你可以给有标签的点...

  • neo4j 索引

    基础 创建环境[https://www.jianshu.com/p/a9d2c115c864] 在浏览器中编写语句...

  • Neo4j-3.1 索引

    Neo4j支持节点或关系上的索引,以提高程序的性能 可以为具有相同标签名称的所有节点的属性创建索引 可以在MATC...

  • Neo4j--数据库索引

    Neo4j数据库 数据库索引 数据库索引是数据库中某些数据的冗余副本,目的是提高相关数据的搜索效率。这是以额外的存...

  • 史上最全Neo4j资源传送门

    Neo4j Neo4j 中文社区 Neo4j 官网地址 Neo4j 中文版下载地址 Basics Official...

  • github项目下载太慢解决方法

    github项目下载太慢解决方法,将以下内容配置到hosts里面,下载即可提速: 搜索引擎:http://www....

  • 2018-11-22 Neo4j - 无法删除节点 - 报错Ou

    NEO4J 批量删除关系Neo4j batch delete relationship neo4j删除所有节点和关...

  • Docker 安装Neo4j

    拉取最新的neo4j镜像 docker pull neo4j 运行Neo4j 容器 docker run -it ...

  • docker + NoSQL图数据Neo4j + springb

    介绍NoSQL 介绍Neo4j 安装docker 使用docker 安装Neo4j 入门 Neo4j spring...

  • Spring Data Neo4j 使用

    添加Spring Data Neo4j相关依赖 application.yml添加Neo4j环境配置 Neo4j中...

网友评论

    本文标题:neo4j 各种索引,提速

    本文链接:https://www.haomeiwen.com/subject/fgjbiftx.html