我一直在使用关系数据库,最近决定将性能关键服务从 SQL Server 迁移到 Tarantool,希望能够利用快速的内存搜索和处理。在计划迁移时,我有几个问题。
我有一个包含大约一百万条记录的表,其中包含定价信息,这意味着我主要处理数字和 uuid。首先,我需要运行一个包含多个条件的选择来获取数据的子集,比如
SELECT * FROM rates WHERE SupplierId = @SupplierId AND ProductId = @ProductId AND (LocalDistributionZoneId = @LocalDistributionZoneId OR LocalDistributionZoneId IS NULL)
Q1:在Lua中运行这样的查询的策略是什么?我是为谓词中的每个字段创建一个索引,还是可以使用一个二级复合索引?
Q2:在SQL(box.sql.execute)中运行这样的查询会比在纯Lua中更方便吗?它会比在纯 Lua 中运行相同的查询慢得多吗?
Q3:如果我使用 SQL,是否可以查看执行计划以确保我运行的查询确实使用了我在空间中定义的索引?
好的,在我获得第一个查询的结果后,我需要分析数据,然后根据分析结果,对第一个查询返回的数据集再运行一个查询。
Q4:Tarantool 能帮我处理中间数据集吗?更具体地说,我是否可以利用空间中创建的索引对元组的中间子集运行更多查询?或者,我需要实现替代策略,例如将内部结果重新添加到具有预定义索引的临时空间,然后再进行一次选择,或者自己实现进一步的搜索?
谢谢!
最佳答案
关于lua - 如何在 Tarantool 中运行复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53639489/