Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

select

select([key [,, options]])

Поиск кортежа или набора кортежей в указанном пространстве по первичному ключу. Для поиска по конкретному индексу используйте метод 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 при обнаружении конфликта транзакций в

: режиме MVCC-транзакций

  • недействительная позиция итератораФакторы сложности: Размер индекса, тип индекса

Примеры:

Ниже приведено несколько примеров использования 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]...