如何在Tarantool中运行复杂查询
2018-12-5 19:32:31
收藏:0
阅读:123
评论:1
我一直在使用关系型数据库,最近决定将一个关键性能服务从SQL Server迁移到Tarantool,希望能够利用快速的内存搜索和处理功能。在计划迁移时,我有几个问题。
我有一个包含约一百万条记录的定价信息表,这意味着我主要处理数字和uuid。首先,我需要运行包含多个条件的select语句,以获取数据的子集,例如
SELECT * FROM rates WHERE SupplierId = @SupplierId AND ProductId = @ProductId AND (LocalDistributionZoneId = @LocalDistributionZoneId OR LocalDistributionZoneId IS NULL)
问题1:在Lua中运行这样的查询的策略是什么?我为每个谓词字段创建索引还是可以使用一个次要组合索引?
问题2:运行这样的查询是否更方便在SQL(box.sql.execute)中进行,而不是在纯Lua中进行?与在纯Lua中运行相同查询相比,是否会显着变慢?
问题3:如果我使用SQL,是否可以查看执行计划,以确保我运行的查询确实使用我在空间中定义的索引?
好的,在我获得第一个查询的结果之后,我需要分析数据,然后根据分析结果在由第一个查询返回的数据集上运行另一个查询。
问题4:Tarantool是否可以帮助我处理中间数据集?更具体地说,我是否可以针对中间元组的子集运行更多的查询,利用在空间中创建的索引?或者,我需要实现其他策略,如将中间结果重新添加到带有预定义索引的临时空间中,然后进行另一个选择,或者自己实现进一步的搜索?
谢谢!
点赞
用户1229313
- 不要使用 SQL,它更快:它不会为中间执行结果创建垃圾回收对象。
- 是的,请使用我们的 SQL 功能。
- 使用 EXPLAIN 语句。
- 我不知道你所说的“帮助”具体意味着什么。你可以尝试任何有效的策略:创建一个更复杂的查询,在视图中保存原始查询以在结果查询中使用,创建一个临时表并与其一起工作。为了提供更多细节,让我们看看 Tarantool 选择的执行计划是否足够好,或者你需要手动优化它。
2018-12-18 21:57:56
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
