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具有相同的价格(二级索引),它们如何对记录进行排序?我测试并看起来像主索引。这种行为是否标准化了?
答案 0 :(得分:1)
Tarantool有几种类型的索引[1]。有些是排序的一些没有排序。例如,树索引[2]将被排序,这意味着你可以获得边界,并且哈希索引[3]没有排序,意味着你可以获得没有复制和排序的边界。
在您的情况下,您使用树索引。所以你可以使用最小值,最大值,界限选择等来获得“价格”指数。
更新(通过电子邮件进行了一些会谈后)
如果多个记录具有相同的二级索引且最后一个 min()
,则Tarantool会按max()
的主键返回第一个元组。
这种行为对于Tarantool来说是正常的,你可以指望它在不久的将来不会改变。
[1] https://tarantool.org/en/doc/2.0/book/box/box_index.html?highlight=index#module-box.index