慢 Data Explorer 查询

我创建了一些数据探索器查询。

如果在管理员后端执行它们,GUI 会显示数据库查询本身非常快的执行时间,例如“查询耗时 7.9 毫秒。”

我的浏览器的网络日志显示,例如访问了 https://example.com/admin/plugins/explorer/queries/1/run,并且获取结果耗时是其 1-2 数量级 的时间,例如 150 毫秒。

当我 curl 这样的查询时,耗时更长,大约是管理员面板中运行查询时间的 两倍

如何才能让数据探索器查询能够快速检索,而没有那么大的开销?

1 个赞

根据您提供的信息,我认为这些是简单的查询(在 RDBMS 中执行速度快),但返回的行数很多(在后端反序列化和传输速度慢)。

如果当前性能阻碍了您的用例,您可以探索许多不同的解决方案:

  • 降低每页的行数,这样每页的速度更快。

  • 构建一个插件,在新的 API 端点中公开相同的信息,并更智能地处理缓存和数据格式。

  • 直接查询底层数据库。

3 个赞

我们有一些特殊的查找功能,用于将某些列名(user_id、post_id 等)别名为 post_id1 等。

1 个赞

谢谢大家!

如果我的查询只返回一行,结果也是一样的。例如,一个返回单个整数的查询,在管理员后台的 Data Explorer 面板中运行需要 9 毫秒,通过 curl 从外部针对 Data Explorer API 运行则需要 200 毫秒。

我非常希望避免这样做,我使用 Data Explorer 是因为它在论坛上被推荐为一个从数据库获取信息的不错方式,并且有一个运行良好的 API。

我的查询在 JOIN 中使用了它们,但在结果集中没有使用。SELECT 只有一个列,并且是一个新计算出来的、具有任意名称的列。

NGINX 说请求的服务器时间是什么,这可能是网络问题吗?

假设这些是 HTTP 状态码右侧 3 位数的浮点数(例如,... 200 642 "-" **0.107 0.108** "system" ...,我用星号突出显示),它们大约是后端报告的查询时间的 10 倍,并且大约是我从客户端 curl 所需时间的一半。