2
  local orders = box.schema.space.create('orders')
  box.schema.sequence.create('orderId')
  orders:create_index('id', {sequence='orderId'})
  orders:create_index('price', {unique=false, parts={2, 'integer'}})

  local bestOrder = orders.index.price:min()

我正在搜索具有min()二级索引功能的最佳订单(最低价格)。如果它们具有相同的价格(二级索引),Tarantool 如何对记录进行排序?我通过主索引测试并看起来像。这种行为是否标准化?

4

1 回答 1

3

Tarantool 有几种类型的索引 [1]。有些是排序的,有些是未排序的。例如,树索引 [2] 将被排序,这意味着您可以获得边界,而哈希索引 [3] 未排序,意味着您无需复制和排序即可获得边界。

在您的情况下,您使用树索引。因此,您可以将最小值、最大值、绑定选择等用于“价格”索引。

更新(通过电子邮件进行了一些会谈后)

如果多条记录具有相同的二级索引并且last for ,则Tarantool按主键返回第一个元组。min()max()

这种行为对于 Tarantool 来说是正常的,你可以指望它在不久的将来不会改变。


[1] https://tarantool.org/en/doc/2.0/book/box/box_index.html?highlight=index#module-box.index

[2] https://en.wikipedia.org/wiki/B-tree

[3] https://en.wikipedia.org/wiki/Hash_table

于 2018-03-13T15:37:33.160 回答