select
Поиск кортежа или набора кортежей в указанном пространстве по первичному ключу. Для поиска по конкретному индексу используйте метод index_object:select().
Параметры:
-
space_object(space_object) — ссылка на объект. -
key(scalar/table) — значение для сопоставления с ключом индекса, который может быть составным. -
options(table/nil) — ни один, любой или все параметры, которые допускает index_object:select():-
options.iterator– тип итератора. По умолчанию используется тип 'EQ'. -
options.limit– максимальное количество кортежей. -
options.offset– количество кортежей, которые нужно пропустить. -
options.after– кортеж или позиция кортежа (tuple_pos), после которогоselectначинает поиск. Можно передать пустую строку или box.NULL в этот параметр, чтобы начать поиск с первого кортежа. -
options.fetch_pos– если true, методselectвозвращает позицию последнего выбранного кортежа в качестве второго значения.
-
Возвращает
none
Эта функция может возвращать одно или два значения:
- Кортежи, поля первичного ключа которых равны полям переданного
ключа. Если количество переданных полей меньше количества полей в
первичном ключе, то сравниваются только переданные поля, поэтому
select{1,2}соответствует кортежу, первичный ключ которого –{1,2,3}. - (Опционально) Если для параметра
options.fetch_posзадано значение true, возвращает строку в кодировке base64, представляющую позицию последнего выбранного кортежа, в качестве второго значения. Если кортежи не найдены, возвращаетnil.
Тип возвращаемого значения
none
-
массив кортежей
-
(Опционально) строка
-
пространство не найдено
-
неверный тип
ER_TRANSACTION_CONFLICT при обнаружении конфликта транзакций в
- недействительная позиция итератораФакторы сложности: Размер индекса, тип индекса
Примеры:
Ниже приведено несколько примеров использования select с различными
параметрами. Чтобы попробовать эти примеры, необходимо выполнить
начальную загрузку экземпляра Tarantool, как описано в
Использование операций с данными.
-- Вставка тестовых данных --tarantool> bands:insert{1, 'Roxette', 1986}bands:insert{2, 'Scorpions', 1965}bands:insert{3, 'Ace of Base', 1987}bands:insert{4, 'The Beatles', 1960}bands:insert{5, 'Pink Floyd', 1965}bands:insert{6, 'The Rolling Stones', 1962}bands:insert{7, 'The Doors', 1965}bands:insert{8, 'Nirvana', 1987}bands:insert{9, 'Led Zeppelin', 1968}bands:insert{10, 'Queen', 1970}---...-- Выборка кортежа по указанному первичному ключу --tarantool> bands:select(4)---- - [4, 'The Beatles', 1960]...-- Выборка максимум 3 кортежей со значением первичного ключа больше 3 --tarantool> bands:select({3}, {iterator='GT', limit = 3})---- - [4, 'The Beatles', 1960]- [5, 'Pink Floyd', 1965]- [6, 'The Rolling Stones', 1962]...-- Выборка максимум 3 кортежей после указанного кортежа --tarantool> bands:select({}, {after = {4, 'The Beatles', 1960}, limit = 3})---- - [5, 'Pink Floyd', 1965]- [6, 'The Rolling Stones', 1962]- [7, 'The Doors', 1965]...-- Выборка первых 3 кортежей и получение позиции последнего кортежа --tarantool> result, position = bands:select({}, {limit = 3, fetch_pos = true})---...-- Затем эта позиция передается в параметр 'after' --tarantool> bands:select({}, {limit = 3, after = position})---- - [4, 'The Beatles', 1960]- [5, 'Pink Floyd', 1965]- [6, 'The Rolling Stones', 1962]...