如果多个记录具有相同的二级索引,则使用 min() 在 tarantool 中排序
Sorting in tarantool with min() if several records have equal secondary index
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 如何排序记录?我通过主索引测试并看起来像。这种行为是否标准化?
Tarantool 有几种类型的索引 [1]。有些是排序的,有些是未排序的。例如,树索引 [2] 将被排序,这意味着您可以获得边界,而哈希索引 [3] 未排序,意味着您无需复制和排序即可获得边界。
在你的例子中,你使用了树索引。因此,您可以为 'price' 索引使用最小值、最大值、边界选择等。
更新(在通过电子邮件进行了一些讨论之后)
Tarantool returns first 按主键的元组 min()
如果多个记录具有相同的二级索引和 last max()
.
这种行为对于 Tarantool 来说是正常的,你可以认为它在不久的将来不会改变。
[1] https://tarantool.org/en/doc/2.0/book/box/box_index.html?highlight=index#module-box.index
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 如何排序记录?我通过主索引测试并看起来像。这种行为是否标准化?
Tarantool 有几种类型的索引 [1]。有些是排序的,有些是未排序的。例如,树索引 [2] 将被排序,这意味着您可以获得边界,而哈希索引 [3] 未排序,意味着您无需复制和排序即可获得边界。
在你的例子中,你使用了树索引。因此,您可以为 'price' 索引使用最小值、最大值、边界选择等。
更新(在通过电子邮件进行了一些讨论之后)
Tarantool returns first 按主键的元组 min()
如果多个记录具有相同的二级索引和 last max()
.
这种行为对于 Tarantool 来说是正常的,你可以认为它在不久的将来不会改变。
[1] https://tarantool.org/en/doc/2.0/book/box/box_index.html?highlight=index#module-box.index