首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么RediSearch在排序数字字段时比较慢?

为什么RediSearch在排序数字字段时比较慢?
EN

Stack Overflow用户
提问于 2021-12-10 08:06:49
回答 2查看 240关注 0票数 1

我在我的项目中使用RediSearch,它的索引有超过1300万个文档。如果没有用户提供的过滤器,我需要获取最新的文档。我的索引架构有一个带有可排序标志的数字字段,我试图运行以下查询。

FT.SEARCH media * SORTBY media_id DESC LIMIT 0 10

它有一段时间不返回响应,我通常会终止查询。

有没有办法在一个可接受的时间内得到最后的文件?

EN

回答 2

Stack Overflow用户

发布于 2021-12-12 11:40:47

我能够通过为数值字段插入具有递增值的文档来再现您描述的行为。我已经创建了一个FlameChart来检查代码的哪一部分消耗了CPU。

罪魁祸首是我们使用的排序堆,它是一种昂贵的数据结构。在我的实验中,每个数值都被插入到堆中,这会导致很长的查询时间。这是您如何运行查询的预期行为。

作为一种解决方案,您可以使用LIMIT 0 1运行查询,这将将堆工作减少到几乎为零,然后使用使用过滤器和LIMIT 0 10运行查询所获得的值。

我们正在考虑优化这些查询的方法,但目前还没有解决方案。

干杯

票数 3
EN

Stack Overflow用户

发布于 2021-12-12 15:23:18

短期的工作可能是在更新索引时将最新的文档ID存储在Redis字符串中。在管道中运行以消除不必要的网络来回运行。

代码语言:javascript
运行
复制
SET LASTEST_DOCUMENT_ID $docId
HSET $docId KEY VALUE....

如果没有搜索参数,您可以简单地使用GET LASTEST_DOCUMENT_ID

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70301431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档