gpt4 book ai didi

lua - 按二级索引从 Tarantool 中选择,并按另一个字段和限制/偏移量排序

转载 作者:行者123 更新时间:2023-12-03 06:30:36 25 4
gpt4 key购买 nike

我有一些带有字段的顶部空间:
-id,
-状态
-评级

我有两个空间索引top:

--primary  
box.space.top:create_index('primary', { type = 'TREE', unique = true, parts = { 1, 'NUM' } })
--status
box.space.top:create_index('status', { type = 'TREE', unique = false, parts = { 2, 'NUM' } })

我可以按id状态进行选择

--select by id 
space.top.index.primary:select(someId)
--select by status with limit/offset
space.top.index.status:select({someStatus}, {iterator = box.index.EQ, offset = 0, limit = 20})

有时我需要按状态选择并按评级排序。
什么是最好的方法?创建另一个索引,其中包含状态评级部分,并进行一些棘手的查询(如果可能的话)?还是继续在Lua程序中按status选择并按 rating排序?谢谢!

UPD:谢谢,克斯特亚!我像这样修改了索引状态:

box.space.top:create_index('status_rating', { type = 'TREE', unique = false, parts = { 2, 'NUM', 3 'NUM' } })

现在我可以查询:

local active_status = 1 
local limit = 20
local offset = 0
box.space.top.index.status_rating:select({active_status}, {iterator = box.index.LE, offset=offset, limit=limit})

太棒了!

最佳答案

创建第三个索引没有意义,如果需要按评级排序,只需将其作为第二部分包含到第二个索引中,并使用 GE/GT 迭代器,数据就会排序出来。这是一个内存数据库,向索引添加更多部分不会占用更多内存,只会稍微减慢插入速度。

关于lua - 按二级索引从 Tarantool 中选择,并按另一个字段和限制/偏移量排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34674968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com