当前位置: 首页 > 知识库问答 >
问题:

如何在Tarantool中运行复杂的查询

左丘子平
2023-03-14

我一直在使用关系数据库,最近决定将性能关键服务从SQL服务器迁移到Tarantool,希望利用内存中的快速搜索和处理。在计划迁移时,我有几个问题。

我有一个包含大约一百万条记录的表,其中包含定价信息,这意味着我主要处理的是数字和UUID。首先,我需要运行一个包含多个条件的select来获取数据的子集,如

SELECT * FROM rates WHERE SupplierId = @SupplierId AND ProductId = @ProductId AND (LocalDistributionZoneId = @LocalDistributionZoneId OR LocalDistributionZoneId IS NULL)

Q1:在Lua中运行这样一个查询的策略是什么?我是为谓词中的每个字段创建索引,还是可以使用一个二级复合索引?

问题2:在SQL(box.SQL.execute)中运行这样的查询比在纯Lua中运行更方便吗?它会比在纯Lua中运行相同的查询慢很多吗?

问题3:如果我使用SQL,是否可以检查Execution计划以确保我运行的查询确实使用我在空间中定义的索引?

好的,在获得第一次查询的结果后,我需要分析数据,然后根据分析结果,对第一次查询返回的数据集再运行一次查询。

问4: Tarantool可以帮助我处理中间数据集吗?更具体地说,我是否可以利用在空间中创建的索引对元组的中间子集运行更多的查询?或者,我需要实施替代策略,比如用预定义的索引将intrim结果重新添加到临时空间,然后再做另一个选择,或者自己实现进一步的搜索?

谢谢你!

共有1个答案

太叔志文
2023-03-14
  1. 不要。使用SQL,速度更快:它不会为中间执行结果创建垃圾收集对象。
 类似资料:
  • 有两个空格,分别命名为和。Space具有Company id(主要索引)和geolocation(点)字段(次要索引)。空间包含car(主要索引)和companys(可租用此车的所有公司的数组)。我需要得到前10名的公司在指定的矩形,在那里可以租用特定的汽车。实现这一目标的最佳解决方案是什么? 在这里,我需要结合空间索引和非空间索引以获得结果。我的搜索计划是查找汽车元组并获取所有公司(可能有100

  • 情况: 3年来,有一个应用程序使用tarantool(现在是1.10.3),我们曾经决定将它移到Kubernetes,并替换旧的丑陋的dockerfile,基于Jessie的官方图像tarantool/tarantool:2.3.1。我不知道这些数据是否都可以。 在这种情况下,我有两个问题,我真的很乐意阅读你的正确答案: tarantool 2.3.1-2-g92750c828是否支持从taran

  • 本文向大家介绍如何在MongoDB未索引字段上有效运行复杂查询?,包括了如何在MongoDB未索引字段上有效运行复杂查询?的使用技巧和注意事项,需要的朋友参考一下 创建索引以有效运行复杂的查询。首先让我们创建一个包含文档的集合- 在方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是在未索引字段上有效执行复杂查询的查询- 这将产生以下输出-

  • 问题内容: 我正在将MS-Access 2003与查询创建者一起使用。我从一个表()中选择所有内容,然后从另一表()中选择一个特定行()。我想从第二个表中选择另一行并将其连接起来。 查询 该查询的确在ID(字段)与where匹配的地方添加了字段。它像一种魅力。但是,我想在结果中添加另一行。我想获得行所在的位置(该部分实际上在工作)和行所在的位置。我将得到2行,并且当我要求()时,我希望将这两行连接

  • 问题内容: 是否可以对JSON对象执行复杂的查询?我愿意接受JavaScript或jQuery解决方案,越轻松越好。我正在构想某种类似于LINQ或SQL的功能编程语言。 我不希望其他任何第三方库或附加组件。 更新 从早期答案的外观来看,将需要一个附加组件。在这种情况下,我更喜欢不需要安装过程的加载项。随软件发布一起部署的东西(如jQuery)很好(例如* .js文件集)。 问题答案: 签出:是否有

  • 我尝试使用官方的Tarantool客户端从Golang应用程序运行SQL查询。我知道如何做的唯一方法是使用下面的。但我没有收到任何错误。我可以删除不存在的表,插入具有重复键的行。我永远不会发现出了什么问题。 你能指出获取错误的方法或运行SQL查询的正确方法吗?