密码排序性能

2023-12-31

我正在尝试完成一项非常常见的任务。我在 Neo4J 数据库中有大量数据集,并且希望通过 RESTful Web 服务以 25 个节点的块形式返回数据。我的模型非常简单:

(:Tenant {Hash:''})-[:owns]->(:Asset {Hash:'', Name:''})

我对Hash两个标签上的属性。

如果我想获取第 101 个数据页,我的密码查询将如下所示:

MATCH (:Tenant {Hash:'foo'})-[:owns]->(a:Asset)
RETURN a
ORDER BY a.Hash
SKIP 2500
LIMIT 25

我的数据集由一个租户组成,拥有约 75K 资产。上述查询大约需要 30(!) 秒才能完成。我还注意到,我在数据中前进得越远(即越高SKIP) 查询返回所需的时间越长。

我很快发现我的性能问题的罪魁祸首是ORDER BY a.Hash。当我删除它时,查询返回亚秒级结果。这实际上是相当令人惊讶的,因为我希望索引本身也被排序。

显然,为了实现合理的分页,我必须有一致的排序顺序。

  • 关于执行此查询有什么建议吗?
  • 分页的替代建议?我可以看到添加专用页面节点,但这将变得难以维护。
  • 无论如何,默认的排序顺序是什么,它是否一致?

嘿@GeoffreyBraaf 本周找到了一些时间来查看您的问题,您是对的,存在一些实施问题导致了不必要的缓慢。

我按照 Timmy 的建议实现了一个 Java 版本,该版本在 30 毫秒内完成。 Cypher 版本花了 100 秒。在 Cypher 中实现 top-n select 将其大幅改进了 600 倍。因此,Cypher 现在该查询大约需要 150 毫秒。

See: https://gist.github.com/jexp/9954509 https://gist.github.com/jexp/9954509

该工作已合并到 2.0-maint 中,并将作为 2.0.2 的一部分发布

See: https://github.com/neo4j/neo4j/pull/2230 https://github.com/neo4j/neo4j/pull/2230

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

密码排序性能 的相关文章

  • 如何在 SQL 中选择“上一条”和“下一条”记录?

    I am building a blog post detail page on my site that will display display a previous and next link similar to how a typ
  • 在材料表和reactjs中自定义分页的任何示例

    有自定义分页的示例吗 材料表和reactjs 我想将页面大小传递到服务器 并且需要隐藏分页中的第一个和最后一个按钮 研究这个例子https material table com docs features component overrid
  • 如何在 Django 中对搜索结果进行分页?

    下面的代码在字典中搜索单词 并将结果呈现在搜索 html 所以我需要对该页面上的结果进行分页 我该怎么做 我在这里读了这篇文章https docs djangoproject com en 1 9 topics pagination htt
  • 无法将 neo4j shell 连接到本地服务器

    我已经通过自制程序安装了 neo4j 2 0 0 并启动了服务器 我可以通过端口 7474 访问 webadmin 控制台 但是当我运行时neo4j shell host localhost port 7474 I get non JRMP
  • Neo4j 服务器无法使用非托管扩展启动

    我正在尝试在 neo4j 服务器 版本 CE 2 3 2 上使用非托管扩展 所以我正在尝试一个简单的你好世界的例子 http neo4j com docs stable server unmanaged extensions htmlNeo
  • 在 Neo4j OGM 1.1.3 ogm 深度为 2 中加载对象非常慢

    使用查询深度 2 时出现超时session load 我正在使用 Neo4j OGM 1 1 3 尝试从 Spring Data Neo4j 3 4 迁移 尝试加载 Node 对象 class Node Long id String nam
  • Neo4j Cypher:在用另一个节点替换节点之前传输所有关系

    我试图在删除第一个节点之前将所有传入和传出关系从一个节点转移到另一个节点 他们都有相同的标签 我看到了这个Neo4j Cypher 复制关系并删除节点 https stackoverflow com questions 21634936 n
  • 通过 cypress JS 进行分页测试

    I need to test that when I select some model car as a result I have only that model in all pages So basically I do pagin
  • 如何仅匹配两个节点之间的一种关系

    我正在使用 neo4j 图形数据库 它在 Ruby on Rails 中使用 例如 我汤姆和杰瑞之间有3个关系 他们合作盖了3栋房子 现在我只想匹配3个中的1个 如何编写查询代码 我已经尝试过 这是我的代码 Neo4j Session qu
  • UNWIND 从 JSON 文件加载的多个不相关的数组

    我试图通过一次调用 apoc load json 来展开多个数组属性 我的版本不能完全工作 某些关系无法加载 我的猜测是 这是由于通过WITH 命令进行输出管道造成的 如果我为每个基于数组的属性单独运行展开 我可以加载所有内容 但我很好奇如
  • Android 滚动分页

    Android 操作系统有可以实现滚动分页的功能吗 Edit滚动分页是指像主屏幕上一样的分页 您可以左右滑动并转到下一页或上一页 您可以在 android git kernel org 上查看 Launcher 的源代码作为示例 查找名为
  • neo4j合并2个或多个重复节点

    我使用 cypher 手动输入 Neo4j 数据库 因此很容易出现创建重复节点等错误 重复的节点将与其他节点具有各自的关系 是否有内置函数可以合并这些节点 或者我应该手动完成 听起来可能 但密码脚本很复杂 获取每个重复节点的关系 使用正确的
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • neo4j - python 驱动程序,服务不可用

    我对 neo4j 非常陌生 我正在尝试建立从 python3 6 到 neo4j 的连接 我已经安装了驱动程序 并且刚刚开始执行第一步 导入请求 导入操作系统 导入时间 导入urllib 从 neo4j v1 导入 GraphDatabas
  • “neo4j-admin”不被识别为内部或外部命令、可操作程序或批处理文件

    我正在尝试将 neo4j 2 2 数据导入 neo4j 3 1 文档 https neo4j com docs operations manual current upgrade deployment upgrading 告诉我跑 neo4
  • Neo4j节点创建速度

    我的笔记本电脑上有一个新的 neo4j 设置 通过 REST API 创建新节点似乎相当慢 平均约 30 40 毫秒 我在谷歌上搜索了一下 但找不到任何真正的基准来衡量 应该 花多长时间 有这个帖子 https www arangodb c
  • Spring Neo4j不保存数据

    我创建了新的应用程序 它应该通过存储库将 Person 对象保存到 neo4j 中 但是当我使用 findAll 方法时 我没有任何项目 我正在使用 Spring Boot 这是我的配置 package com example import
  • 使用 MongoDB 作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

    我们目前正在为一家专业公司内部实施类似 CRM 的解决方案 由于存储信息的性质以及信息的不同值和键 我们决定使用文档存储数据库 因为它完全适合目的 在本例中我们选择 MongoDB 作为此 CRM 解决方案的一部分 我们希望存储实体之间的关
  • 如何隐藏 Neo4j 中节点之间不需要的关系

    我是 Neo4j 的新手 我有一个奇怪的要求 我有一些节点 CREATE a node title 1 CREATE b node title 2 CREATE c node title 3 CREATE d node title 4 以及
  • 如何在 Laravel 中的 get() 之后对集合进行分页?

    我对两个查询结果进行了合并 效果很好 events1 App Event Where valid to gt today gt orderByRaw valid to ASC gt get events2 App Event Where v

随机推荐

  • 使用自己的属性推断类型

    我试图找出是否有一种方法可以从实现的属性推断接口中的类型 简化示例 interface Options type string number demanded boolean interface Command The parameter
  • NSURLConnection 委托方法不会被调用...无法弄清楚并阅读了很多帖子

    我有一堂课叫BackendConnector它使用一个NSURLConnection打电话给SoapWebservice那就是https 我找到了很多帖子 并尝试实现有关身份验证的委托方法 但它们不会被调用 并且在 google 中 6 小
  • Server.Transfer 导致会话异常

    在我的全局中 当发生错误时我有以下代码来处理 code goes here Server Transfer Error aspx ErrorID errorId 它曾经是一个Response Redirect除了改变了 url 之外 它工作
  • 无法将 ViewBag 数据传递给 AngularJS

    我有一个控制器 public ActionResult Edit int id ViewBag IsComplete false return View dbContext Users Where user gt user Id id 以及
  • React:改变消费者的上下文

    以下问题与 React Context 文档中的以下部分相关 动态上下文 https reactjs org docs context html dynamic context 从嵌套组件更新上下文 https reactjs org do
  • 如何在 Windows 8 和 10 中枚举已安装的 StoreApps 及其 ID

    我想要获取的是所有已安装的 StoreApp 应用程序的 AppUserModelId 以便我可以将其传递给IApplicationActivationManager gt ActivateApplication 在 Windows 8 中
  • 如何让 rspec 不显示数据库查询而只显示rails_12factor 的点?

    ruby 2 0 rails 3 2 17 rspec 2 14 8 Database mysql rspec spec用于仅输出点 当我推送到 Heroku 并最近添加了rails 12factor宝石来绕过它 然而现在 当我在本地运行规
  • Angular5需要功能来检查/取消选中mat-table内的mat-checkbox

    我可以让表格中的复选框在选中 取消选中时发出更改 但在单击地图图钉来切换复选框状态时往复遇到问题 我的桌子和地图 https i stack imgur com CBJsu png 这是我的桌子
  • 有关通用 Scala 函数的更多信息

    尝试在 Scala 中实现以下 Haskell 函数 来自 Learn You a Haskell 以便它可以与 Int Double 等一起使用 doubleUs x y x 2 y 2 请注意 这类似于Scala 如何定义 通用 函数参
  • OpenCV4 上没有名为 Windows 和 WINDOW_GUI_EXPANDED 的按钮图标

    我有同样的问题这个问题 https stackoverflow com q 49634045 4483946 当我在 OpenCV 4 中使用带有 WINDOW GUI EXPANDED 的命名窗口时 我得到带有按钮 放大 缩小等 的窗口
  • 永久禁用 Visual Studio 2015 中的 Git 集成

    我使用的是 Android studio 在那里我总是使用 Git 但在 Visual studio 2015 中我使用 VFS 问题是 Visual Studio 始终连接到我的 Git 存储库 而不是 Team Foundation S
  • Powershell - 脚本在函数外部工作但不在函数内工作

    我正在尝试编写一个简单的函数 该函数从指定目录获取文件 使用一个条件过滤它们 然后将结果放回 我想出了如下 如果它没有放置在函数中 则它可以工作 而当放置在函数中时 它只运行Get ChildItem我不知道为什么 这是我的简单代码 fun
  • 如何设置 docker 注册表作为代理?

    我有一台服务器 我们将其命名为 A 它可以访问互联网 并且我可以从该服务器从官方 docker io 注册表中提取图像 我还有其他服务器 B C 出于安全原因 它们不能具有相同的访问权限 但允许访问 A 我还决定在 A 上安装一个私有注册表
  • pytorch中嵌入的加权求和

    I have a sequence of 12 words which I represent using a 12x256 matrix using word embeddings Let us refer to these as I w
  • 每天在特定时间运行 google colab

    我最近构建了一个在Google Colaboratory上运行的Python程序 我需要每天在特定时间运行该程序 那么有什么方法可以安排它在Google Colab上运行吗 你需要创建一个notebooks csv列出所有 Colabora
  • Gradle 构建无法在父级 gradle.properties 文件中找到属性

    我有多个项目 gradle 构建 我正在尝试通过外部化依赖项版本gradle properties 不幸的是 子项目无法在父项目中找到属性gradle properties 所以在父母gradle properties I have SPR
  • 在 d3 中制作响应式动画弧?

    我在d3中看这个动画 http bl ocks org mbostock 5100636 http bl ocks org mbostock 5100636 我想知道是否有任何方法可以使其响应 以便大小随着浏览器窗口大小的调整而变化 或者使
  • 使用 ng-include 导致未定义

    您好 我对 Angular 相当陌生 我刚刚开始使用它来启动我的第一个应用程序 这是我到目前为止所做的事情 这是我的索引文件 div div
  • AngularJS 中的 401 未经授权的错误处理

    我是 AngularJS 的新手 现在花了 3 天寻找处理 401 状态的方法 我尝试过拦截器 使用 http 使用 resource 但没有任何效果 我的应用程序在同一服务器上调用 JSONP 调用 当错误发生时 它会被错误回调函数捕获
  • 密码排序性能

    我正在尝试完成一项非常常见的任务 我在 Neo4J 数据库中有大量数据集 并且希望通过 RESTful Web 服务以 25 个节点的块形式返回数据 我的模型非常简单 Tenant Hash owns gt Asset Hash Name