Как выбрать диапазон ключей из tarantool, например, с помощью SELECT BETWEEN в SQL? - PullRequest
1 голос
/ 14 июня 2019

Поскольку это один из самых распространенных вопросов в https://t.me/tarantool и https://t.me/tarantoolru,, я выкладываю ответ здесь.

1 Ответ

0 голосов
/ 14 июня 2019

Вы можете сделать это, используя как Lua, так и SQL.

1) Используйте хранимую процедуру в Lua, например:

function select_between(space_name, index_name, field_name, from, to)
    local obj = index_name == nil and box.space[space_name] or box.space[space_name].index[index_name]

    local result = {}
    for _, tuple in obj:pairs(from, {iterator = 'GE'}) do
        if (tuple[field_name] <= to) then
            table.insert(result, tuple)
        else
            break
        end
    end
    return result
end


select_between('test', nil, 'id', 1, 3)

2) Начиная с Tarantool 2.0, вы можете использовать SQL (при условии, что у вас есть формат пространства):

box.execute('select * from "test" where "id" between 1 and 3;')
...