我有一些空間頂部與字段:
-id,
-status,
-rating選擇/偏移
我有兩個空間索引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程序中排序? 謝謝!
UPD: 謝謝,Kostya! 我修正指數狀態這樣的:
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})
太好了!
善意的提醒,需要你的數據的詳細信息。 每個狀態的平均行數是多少? 你會閱讀所有頁面還是隻閱讀第一頁? – dgreen
平均行數約爲2000 - 3000單位。我將使用限制/偏移選項作爲分頁 –