我有一些空间顶部的字段:
-id,
-status,
-rating
我有两个空间索引索引:
--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或status选择
--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 程序中按状态选择并按等级排序?谢谢!
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})
伟大的!