Try   HackMD
tarantool> box.space.other.index.sec:select({'str123',123})
---
- - [123, 'str123']
...

tarantool> box.space.other.index.sec:pairs({'str123'}, { iterator ='GE' }):take(5):totable()
---
- - [123, 'str123']
  - [1230, 'str1230']
  - [12300, 'str12300']
  - [12301, 'str12301']
  - [12302, 'str12302']
...

tarantool> \set language sql
---
- true
...

tarantool> select * from other limit 10;
---
- null
- Space 'OTHER' does not exist
...

tarantool> select * from "other" limit 10;
---
- null
- SQL does not support space without format
...

tarantool> \set language lua
---
- true
...

tarantool> box.space.other:format( { {name = "id", type = "int"}, { name ="value", type = "str" } } )
---
- error: 'Can''t modify space ''other'': field 1 has unknown field type'
...

tarantool> box.space.other:format( { {name = "id", type = "integer"}, { name ="value", type = "str" } } )
---
...

tarantool> box.space.other:format( { {name = "id"}, { name ="value", type = "str" } } )
---
...

tarantool> box.space.other:format( { {name = "id" }, { name ="value" } } )
---
...

tarantool> box.space.other:format( {} )
---
...

tarantool> box.space.other:format( )
---
- []
...

tarantool> box.space.other:format( { {name = "id" }, { name ="value" } } )
---
...

tarantool> box.space.other:format( )
---
- [{'name': 'id', 'type': 'any'}, {'name': 'value', 'type': 'any'}]
...

tarantool> box.space.other:format( { {name = "id", type = "integer" }, { name ="value", type = "str" } } )
---
...

tarantool> \set language sql
---
- true
...

tarantool> select * from "other" limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  rows:
  - [1, 'str1']
  - [2, 'str2']
  - [3, 'str3']
  - [4, 'str4']
  - [5, 'str5']
  - [6, 'str6']
  - [7, 'str7']
  - [8, 'str8']
  - [9, 'str9']
  - [10, 'str10']
...

tarantool> select * from "other" order by id desc limit 10;
---
- null
- Can’t resolve field 'ID'
...

tarantool> select * from "other" order by "id" desc limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  rows:
  - [100000, 'str100000']
  - [99999, 'str99999']
  - [99998, 'str99998']
  - [99997, 'str99997']
  - [99996, 'str99996']
  - [99995, 'str99995']
  - [99994, 'str99994']
  - [99993, 'str99993']
  - [99992, 'str99992']
  - [99991, 'str99991']
...

tarantool> select * from "other" where id > 50000 order by "id" desc limit 10;
---
- null
- Can’t resolve field 'ID'
...

tarantool> select * from "other" where "id" > 50000 order by "id" desc limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  rows:
  - [100000, 'str100000']
  - [99999, 'str99999']
  - [99998, 'str99998']
  - [99997, 'str99997']
  - [99996, 'str99996']
  - [99995, 'str99995']
  - [99994, 'str99994']
  - [99993, 'str99993']
  - [99992, 'str99992']
  - [99991, 'str99991']
...

tarantool> select * from "other" where "id" > 50000 limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  rows:
  - [50001, 'str50001']
  - [50002, 'str50002']
  - [50003, 'str50003']
  - [50004, 'str50004']
  - [50005, 'str50005']
  - [50006, 'str50006']
  - [50007, 'str50007']
  - [50008, 'str50008']
  - [50009, 'str50009']
  - [50010, 'str50010']
...

tarantool> select * from "other" where "id" > 50000 2020-05-07 14:34:57.005 [23627] snapshot/101/main I> saving snapshot `./00000000000000100030.snap.inprogress'
2020-05-07 14:34:57.037 [23627] snapshot/101/main C> 0.1M rows written
2020-05-07 14:34:57.046 [23627] snapshot/101/main I> done
2020-05-07 14:34:57.047 [23627] main/104/checkpoint_daemon I> scheduled next checkpoint for Thu May  7 15:34:56 2020

---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  rows:
  - [50001, 'str50001']
  - [50002, 'str50002']
  - [50003, 'str50003']
  - [50004, 'str50004']
  - [50005, 'str50005']
  - [50006, 'str50006']
  - [50007, 'str50007']
  - [50008, 'str50008']
  - [50009, 'str50009']
  - [50010, 'str50010']
...

tarantool> select * from "other" where "id" > 50000 order by "id" desc limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  rows:
  - [100000, 'str100000']
  - [99999, 'str99999']
  - [99998, 'str99998']
  - [99997, 'str99997']
  - [99996, 'str99996']
  - [99995, 'str99995']
  - [99994, 'str99994']
  - [99993, 'str99993']
  - [99992, 'str99992']
  - [99991, 'str99991']
...

tarantool> select * from "other" where "id" < 50000 order by "id" desc, "value" asc limit 10;
---
- null
- ORDER BY with LIMIT does not support different sorting orders
...

tarantool> select * from "other" where "id" < 50000 order by "id" desc, "value" desc limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  rows:
  - [49999, 'str49999']
  - [49998, 'str49998']
  - [49997, 'str49997']
  - [49996, 'str49996']
  - [49995, 'str49995']
  - [49994, 'str49994']
  - [49993, 'str49993']
  - [49992, 'str49992']
  - [49991, 'str49991']
  - [49990, 'str49990']
...

tarantool> select * from "other" where "id" > 50000 order by "id" desc, "value" desc limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  rows:
  - [100000, 'str100000']
  - [99999, 'str99999']
  - [99998, 'str99998']
  - [99997, 'str99997']
  - [99996, 'str99996']
  - [99995, 'str99995']
  - [99994, 'str99994']
  - [99993, 'str99993']
  - [99992, 'str99992']
  - [99991, 'str99991']
...

tarantool> select * from "other" where "id" < 50000 order by "id" desc, "value" desc limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  rows:
  - [49999, 'str49999']
  - [49998, 'str49998']
  - [49997, 'str49997']
  - [49996, 'str49996']
  - [49995, 'str49995']
  - [49994, 'str49994']
  - [49993, 'str49993']
  - [49992, 'str49992']
  - [49991, 'str49991']
  - [49990, 'str49990']
...

tarantool> explain select * from "other" where "id" < 50000 order by "id" desc, "value" desc limit 10;
---
- metadata:
  - name: addr
    type: INTEGER
  - name: opcode
    type: TEXT
  - name: p1
    type: INTEGER
  - name: p2
    type: INTEGER
  - name: p3
    type: INTEGER
  - name: p4
    type: TEXT
  - name: p5
    type: TEXT
  - name: comment
    type: TEXT
  rows:
  - [0, 'Init', 0, 1, 0, '', '00', null]
  - [1, 'Noop', 1, 5, 0, '', '00', null]
  - [2, 'Noop', 1, 0, 1, '', '00', null]
  - [3, 'Integer', 10, 2, 0, '', '00', null]
  - [4, 'MustBeInt', 2, 7, 0, '', '00', null]
  - [5, 'Integer', 0, 3, 0, '', '00', null]
  - [6, 'Ge', 3, 9, 2, '', '00', null]
  - [7, 'SetDiag', 159, 0, 0, 'Failed to execute SQL statement: Only positive integers
      are allowed in the LIMIT clause', '00', null]
  - [8, 'Halt', -1, 0, 0, '', '00', null]
  - [9, 'Eq', 3, 19, 2, '', '00', null]
  - [10, 'IteratorOpen', 2, 0, 0, 'space<name=other>', '00', null]
  - [11, 'Integer', 50000, 4, 0, '', '00', null]
  - [12, 'ApplyType', 4, 1, 0, "\x01", '00', null]
  - [13, 'SeekLT', 2, 19, 4, '1', '04', null]
  - [14, 'Column', 2, 0, 5, '', '00', null]
  - [15, 'Column', 2, 1, 6, '', '00', null]
  - [16, 'ResultRow', 5, 2, 0, '', '00', null]
  - [17, 'DecrJumpZero', 2, 19, 0, '', '00', null]
  - [18, 'Prev', 2, 14, 0, '', '00', null]
  - [19, 'Halt', 0, 0, 0, '', '00', null]
...

tarantool> create table test(id int primary key)
---
- row_count: 1
...

tarantool> drop table test
---
- row_count: 1
...

tarantool> create table test(id int primary key, value str)
---
- null
- Syntax error near 'str'
...

tarantool> create table test(id int primary key, value string)
---
- row_count: 1
...

tarantool> insert into test values(1,"asjkhdaskd"),(2,"zxczxc")
---
- null
- Can’t resolve field 'zxczxc'
...

tarantool> insert into test values(1,'asjkhdaskd'),(2,'zxczxc')
---
- row_count: 2
...

tarantool> \set language lua
---
- true
...

tarantool> box.space
---
- TEST:
    is_local: false
    temporary: false
    engine: memtx
  test:
    is_local: false
    temporary: false
    engine: memtx
  other:
    is_local: false
    temporary: false
    engine: memtx
...

tarantool> 
---
...

tarantool> box.space.TEST:select()
---
- - [1, 'asjkhdaskd']
  - [2, 'zxczxc']
...

tarantool> box.space.TEST:format()
---
- [{'type': 'integer', 'nullable_action': 'abort', 'name': 'ID', 'is_nullable': false},
  {'type': 'string', 'nullable_action': 'none', 'name': 'VALUE', 'is_nullable': true}]
...

tarantool> local v = "string" return v
---
- string
...

tarantool> local v = 'string' return v
---
- string
...

tarantool> local v = [[string]] return v
---
- string
...

tarantool> local v = [[sdkdlkfsj " ' string]] return v
---
- sdkdlkfsj " ' string
...

tarantool> box.execute([[ select * from "other" where "id" < 50000 order by "id" desc, "value" desc limit 10; ]])
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  rows:
  - [49999, 'str49999']
  - [49998, 'str49998']
  - [49997, 'str49997']
  - [49996, 'str49996']
  - [49995, 'str49995']
  - [49994, 'str49994']
  - [49993, 'str49993']
  - [49992, 'str49992']
  - [49991, 'str49991']
  - [49990, 'str49990']
...

tarantool> local res = box.execute([[ select * from "other" where "id" < 50000 order by "id" desc, "value" desc limit 10; ]]) return res.metadata
---
- - name: id
    type: integer
  - name: value
    type: string
...

tarantool> local res = box.execute([[ select * from "other" where "id" < 50000 order by "id" desc, "value" desc limit 10; ]]) return res.rows[10]
---
- [49990, 'str49990']
...

tarantool> local res = box.execute([[ select * from "other" where "id" < 50000 order by "id" desc, "value" desc limit 10; ]]) return res.rows---
- - [49999, 'str49999']
  - [49998, 'str49998']
  - [49997, 'str49997']
  - [49996, 'str49996']
  - [49995, 'str49995']
  - [49994, 'str49994']
  - [49993, 'str49993']
  - [49992, 'str49992']
  - [49991, 'str49991']
  - [49990, 'str49990']
...

tarantool> local res = box.execute([[ select * from "other" where "id" < ? order by "id" desc limit 10; ]], { 500 }) return res.rows
---
- - [499, 'str499']
  - [498, 'str498']
  - [497, 'str497']
  - [496, 'str496']
  - [495, 'str495']
  - [494, 'str494']
  - [493, 'str493']
  - [492, 'str492']
  - [491, 'str491']
  - [490, 'str490']
...

tarantool> help()
---
- - |
    To get help, see the Tarantool manual at https://tarantool.io/en/doc/
    To start the interactive Tarantool tutorial, type 'tutorial()' here.

    Available backslash commands:

      \set language <language>   -- set language (lua or sql)
      \set output <format>       -- set output format (lua[,line|block] or yaml)
      \set delimiter <delimiter> -- set expression delimiter
      \help                      -- show this screen
      \quit                      -- quit interactive console
...

tarantool> \set language lua---
- true
...

tarantool> box.schema.create_space('joined')---
- engine: memtx
  before_replace: 'function: 0x406498a0'
  on_replace: 'function: 0x40649878'
  ck_constraint: []
  field_count: 0
  temporary: false
  index: []
  is_local: false
  enabled: false
  name: joined
  id: 516
- created
...

tarantool> for i = 1,1e5 do box.space.joined:insert{ i, "othe value"..i } end2020-05-07 14:45:41.320 [23627] main/102/interactive space.h:314 E> ER_NO_SUCH_INDEX_ID: No index #0 is defined in space 'joined'
---
- error: 'No index #0 is defined in space ''joined'''
...

tarantool> box.space.joined:create_index('pri')
---
- unique: true
  parts:
  - type: unsigned
    is_nullable: false
    fieldno: 1
  id: 0
  space_id: 516
  type: TREE
  name: pri
...

tarantool> for i = 1,1e5 do box.space.joined:insert{ i, "othe value"..i } end
---
...

tarantool> box.space.other:pairs({50000},{iterator = 'GT'}):take(10):totable()
---
- - [50001, 'str50001']
  - [50002, 'str50002']
  - [50003, 'str50003']
  - [50004, 'str50004']
  - [50005, 'str50005']
  - [50006, 'str50006']
  - [50007, 'str50007']
  - [50008, 'str50008']
  - [50009, 'str50009']
  - [50010, 'str50010']
...

tarantool> box.space.other:pairs({50000},{iterator = 'GT'}):map(function(v) print(v)  end):take(10):totable()
[50001, 'str50001']
[50002, 'str50002']
[50003, 'str50003']
[50004, 'str50004']
[50005, 'str50005']
[50006, 'str50006']
[50007, 'str50007']
[50008, 'str50008']
[50009, 'str50009']
[50010, 'str50010']
---
- []
...

tarantool> box.space.other:pairs({50000},{iterator = 'GT'}):map(function(v) print(v) return v end):take(10):totable()
[50001, 'str50001']
[50002, 'str50002']
[50003, 'str50003']
[50004, 'str50004']
[50005, 'str50005']
[50006, 'str50006']
[50007, 'str50007']
[50008, 'str50008']
[50009, 'str50009']
[50010, 'str50010']
---
- - [50001, 'str50001']
  - [50002, 'str50002']
  - [50003, 'str50003']
  - [50004, 'str50004']
  - [50005, 'str50005']
  - [50006, 'str50006']
  - [50007, 'str50007']
  - [50008, 'str50008']
  - [50009, 'str50009']
  - [50010, 'str50010']
...

tarantool> box.space.other:pairs({50000},{iterator = 'GT'}):map(function(v) local j = box.space.joined:get{ v[1] } return v,j end):take(10):totable()
---
- - [50001, 'str50001']
  - [50002, 'str50002']
  - [50003, 'str50003']
  - [50004, 'str50004']
  - [50005, 'str50005']
  - [50006, 'str50006']
  - [50007, 'str50007']
  - [50008, 'str50008']
  - [50009, 'str50009']
  - [50010, 'str50010']
...

tarantool> box.space.other:pairs({50000},{iterator = 'GT'}):map(function(v) local j = box.space.joined:get{ v[1] } return { v,j } end):take(10):totable()
---
- - - [50001, 'str50001']
    - [50001, 'othe value50001']
  - - [50002, 'str50002']
    - [50002, 'othe value50002']
  - - [50003, 'str50003']
    - [50003, 'othe value50003']
  - - [50004, 'str50004']
    - [50004, 'othe value50004']
  - - [50005, 'str50005']
    - [50005, 'othe value50005']
  - - [50006, 'str50006']
    - [50006, 'othe value50006']
  - - [50007, 'str50007']
    - [50007, 'othe value50007']
  - - [50008, 'str50008']
    - [50008, 'othe value50008']
  - - [50009, 'str50009']
    - [50009, 'othe value50009']
  - - [50010, 'str50010']
    - [50010, 'othe value50010']
...

tarantool> box.space.other:pairs({50000},{iterator = 'GT'}):map(function(v) local j = box.space.joined:get{ v[1] } v = v:unpack() if j then table.insert(v,#v,j:totable()) end end):take(10):totable()
---
- error: '[string "return box.space.other:pairs({50000},{iterato..."]:1: attempt to
    get length of local ''v'' (a number value)'
...

tarantool> box.space.other:pairs({50000},{iterator = 'GT'}):map(function(v) local j = box.space.joined:get{ v[1] } v = v:unpack() if j then table.insert(v,j:totable()) end end):take(10):totable()
---
- error: '[string "return box.space.other:pairs({50000},{iterato..."]:1: bad argument
    #1 to ''insert'' (table expected, got number)'
...

tarantool> box.tuple.new( {1,2,3} ):unpack()---
- 1
- 2
- 3
...

tarantool> box.tuple.new( {1,2,3} ):totable()
---
- [1, 2, 3]
...

tarantool> box.space.other:pairs({50000},{iterator = 'GT'}):map(function(v) local j = box.space.joined:get{ v[1] } v = v:totable() if j then table.insert(v,#v,j:totable()) end end):take(10):totable()
---
- []
...

tarantool> box.space.other:pairs({50000},{iterator = 'GT'}):map(function(v) local j = box.space.joined:get{ v[1] } v = v:totable() if j then table.insert(v,#v,j:totable()) end return v end):take(10):totable()
---
- - [50001, [50001, 'othe value50001'], 'str50001']
  - [50002, [50002, 'othe value50002'], 'str50002']
  - [50003, [50003, 'othe value50003'], 'str50003']
  - [50004, [50004, 'othe value50004'], 'str50004']
  - [50005, [50005, 'othe value50005'], 'str50005']
  - [50006, [50006, 'othe value50006'], 'str50006']
  - [50007, [50007, 'othe value50007'], 'str50007']
  - [50008, [50008, 'othe value50008'], 'str50008']
  - [50009, [50009, 'othe value50009'], 'str50009']
  - [50010, [50010, 'othe value50010'], 'str50010']
...

tarantool> box.space.other:pairs({50000},{iterator = 'GT'}):map(function(v) local j = box.space.joined:get{ v[1] } v = v:totable() if j then table.insert(v,#v+1,j:totable()) end return v end):take(10):totable()
---
- - [50001, 'str50001', [50001, 'othe value50001']]
  - [50002, 'str50002', [50002, 'othe value50002']]
  - [50003, 'str50003', [50003, 'othe value50003']]
  - [50004, 'str50004', [50004, 'othe value50004']]
  - [50005, 'str50005', [50005, 'othe value50005']]
  - [50006, 'str50006', [50006, 'othe value50006']]
  - [50007, 'str50007', [50007, 'othe value50007']]
  - [50008, 'str50008', [50008, 'othe value50008']]
  - [50009, 'str50009', [50009, 'othe value50009']]
  - [50010, 'str50010', [50010, 'othe value50010']]
...

tarantool> box.space.other:pairs({50000},{iterator = 'GT'}):map(function(v) local j = box.space.joined:get{ v[1] } v = v:totable() if j then table.insert(v,#v+1,j:totable()) end return v end):take(10):totable()
---
- - [50001, 'str50001', [50001, 'othe value50001']]
  - [50002, 'str50002', [50002, 'othe value50002']]
  - [50003, 'str50003', [50003, 'othe value50003']]
  - [50004, 'str50004', [50004, 'othe value50004']]
  - [50005, 'str50005', [50005, 'othe value50005']]
  - [50006, 'str50006', [50006, 'othe value50006']]
  - [50007, 'str50007', [50007, 'othe value50007']]
  - [50008, 'str50008', [50008, 'othe value50008']]
  - [50009, 'str50009', [50009, 'othe value50009']]
  - [50010, 'str50010', [50010, 'othe value50010']]
...

tarantool> box.space.joined:format({{name="id",type="number"},{name="value",type="string"}})---
...

tarantool> \set language sql
---
- true
...

tarantool> select * from "other" inner join "joined" on "other".id == "joined"."id" limit 1
---
- null
- Field 'ID' was not found in space 'other' format
...

tarantool> select * from "other" inner join "joined" on "other"."id" == "joined"."id" limit 1;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  - name: id
    type: number
  - name: value
    type: string
  rows:
  - [1, 'str1', 1, 'othe value1']
...

tarantool> select * from "other" inner join "joined" on "other"."id" == "joined"."id" limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  - name: id
    type: number
  - name: value
    type: string
  rows:
  - [1, 'str1', 1, 'othe value1']
  - [2, 'str2', 2, 'othe value2']
  - [3, 'str3', 3, 'othe value3']
  - [4, 'str4', 4, 'othe value4']
  - [5, 'str5', 5, 'othe value5']
  - [6, 'str6', 6, 'othe value6']
  - [7, 'str7', 7, 'othe value7']
  - [8, 'str8', 8, 'othe value8']
  - [9, 'str9', 9, 'othe value9']
  - [10, 'str10', 10, 'othe value10']
...

tarantool> select * from "other" inner join "joined" using ("id") limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  - name: value
    type: string
  rows:
  - [1, 'str1', 'othe value1']
  - [2, 'str2', 'othe value2']
  - [3, 'str3', 'othe value3']
  - [4, 'str4', 'othe value4']
  - [5, 'str5', 'othe value5']
  - [6, 'str6', 'othe value6']
  - [7, 'str7', 'othe value7']
  - [8, 'str8', 'othe value8']
  - [9, 'str9', 'othe value9']
  - [10, 'str10', 'othe value10']
...

tarantool> select * from "other" inner join "joined" on "other"."id" = "joined"."id" limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  - name: id
    type: number
  - name: value
    type: string
  rows:
  - [1, 'str1', 1, 'othe value1']
  - [2, 'str2', 2, 'othe value2']
  - [3, 'str3', 3, 'othe value3']
  - [4, 'str4', 4, 'othe value4']
  - [5, 'str5', 5, 'othe value5']
  - [6, 'str6', 6, 'othe value6']
  - [7, 'str7', 7, 'othe value7']
  - [8, 'str8', 8, 'othe value8']
  - [9, 'str9', 9, 'othe value9']
  - [10, 'str10', 10, 'othe value10']
...

tarantool> select * from  "other","joined" where "other"."id" = "joined"."id" limit 10;
---
- metadata:
  - name: id
    type: integer
  - name: value
    type: string
  - name: id
    type: number
  - name: value
    type: string
  rows:
  - [1, 'str1', 1, 'othe value1']
  - [2, 'str2', 2, 'othe value2']
  - [3, 'str3', 3, 'othe value3']
  - [4, 'str4', 4, 'othe value4']
  - [5, 'str5', 5, 'othe value5']
  - [6, 'str6', 6, 'othe value6']
  - [7, 'str7', 7, 'othe value7']
  - [8, 'str8', 8, 'othe value8']
  - [9, 'str9', 9, 'othe value9']
  - [10, 'str10', 10, 'othe value10']
...

tarantool> \set language lua
---
- true
...

tarantool> for i = 1e5+1,1e6 do box.space.joined:insert{ i, "other value "..i } end
---
...

tarantool> box.space.joined:select() return 1
---
- 1
...

tarantool> clock = requre 'clock'
---
- error: '[string "clock = requre ''clock''"]:1: attempt to call global ''requre''
    (a nil value)'
...

tarantool> clock = require 'clock'
---
...

tarantool> clock.time()
---
- 1588863381.3289
...

tarantool> clock.time()
---
- 1588863382.4993
...

tarantool> local s = clock.time() box.space.joined:select() return clock.time() - s
---
- 1.9611032009125
...

tarantool> box.space.joined:len()
---
- 1000000
...

tarantool> local s = clock.time() box.execute[[ select * from joined; ]] return clock.time() - s
---
- 0.0002589225769043
...

tarantool> local s = clock.time() local t = box.execute[[ select * from joined; ]] return clock.time() - s
---
- 3.4093856811523e-05
...

tarantool> local s = clock.time() local t = box.execute[[ select * from joined; ]] return clock.time() - s, #t
---
- error: '[string "local s = clock.time() local t = box.execute[..."]:1: attempt to
    get length of local ''t'' (a nil value)'
...

tarantool> local s = clock.time() local t,e = box.execute[[ select * from joined; ]] return clock.time() - s,t,e
---
- 7.0571899414062e-05
- null
- Space 'JOINED' does not exist
...

tarantool> local s = clock.time() local t,e = box.execute[[ select * from "joined"; ]] return clock.time() - s,t and #t,e
---
- 2.5693655014038
- 0
- null
...

tarantool> local s = clock.time() local t,e = box.execute[[ select * from "joined"; ]] return clock.time() - s,t and #t.rows,e
---
- 1.9235806465149
- 1000000
- null
...

tarantool> local s = clock.time() local t = box.space.joined:select() return clock.time() - s, t and #t
---
- 0.77890610694885
- 1000000
...

tarantool> local s = clock.proc() local t,e = box.execute[[ select * from "joined"; ]] return clock.proc() - s,t and #t.rows,e
---
- 2.132948403
- 1000000
- null
...

tarantool> local s = clock.proc() local t = box.space.joined:select() return clock.proc() - s, t and #t
---
- 2.284710027
- 1000000
...

tarantool> local s = clock.proc() local t = box.space.joined:select() return clock.proc() - s, t and #t
---
- 0.666978833
- 1000000
...

tarantool> local s = clock.proc() local t = box.space.joined:select() return clock.proc() - s, t and #t
---
- 2.001014359
- 1000000
...

tarantool> local s = clock.proc() local t = box.space.joined:select() return clock.proc() - s, t and #t
---
- 2.635731749
- 1000000
...

tarantool> local s = clock.proc() local t = box.space.joined:select() return clock.proc() - s, t and #t
---
- 0.895570485
- 1000000
...

tarantool> 
[1]+  Stopped                 tarantool
[centos@zinc sample]$ htop
[centos@zinc sample]$ atop
bash: atop: command not found
[centos@zinc sample]$ sudo dnf install -y atop
Last metadata expiration check: 2:15:17 ago on Thu 07 May 2020 12:45:41 PM UTC.
Dependencies resolved.
==============================================================================================================================================
 Package                        Arch                             Version                                 Repository                      Size
==============================================================================================================================================
Installing:
 atop                           x86_64                           2.4.0-4.el8                             epel                           187 k

Transaction Summary
==============================================================================================================================================
Install  1 Package

Total download size: 187 k
Installed size: 432 k
Downloading Packages:
atop-2.4.0-4.el8.x86_64.rpm                                                                                   178 kB/s | 187 kB     00:01    
----------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                          66 kB/s | 187 kB     00:02     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                      1/1 
  Installing       : atop-2.4.0-4.el8.x86_64                                                                                              1/1 
  Running scriptlet: atop-2.4.0-4.el8.x86_64                                                                                              1/1 
  Verifying        : atop-2.4.0-4.el8.x86_64                                                                                              1/1 

Installed:
  atop-2.4.0-4.el8.x86_64                                                                                                                     

Complete!
[centos@zinc sample]$ atop
[centos@zinc sample]$ fg
tarantool


---
...

tarantool> clock.proc64()
---
- 42310712958
...

tarantool> clock.time64()
---
- 1588863707401324526
...

tarantool> clock.time64(), clock.time64()
---
- 1588863722206672701
- 1588863722206673141
...

tarantool> clock.time64()-clock.time64()
---
- 18446744073709541207
...

tarantool> -clock.time64()+clock.time64()
---
- 1815
...

tarantool> -clock.time64()+clock.time64()
---
- 2421
...

tarantool> -clock.time64()+clock.time64()
---
- 2393
...

tarantool>