Size: a a a

2020 August 17

KO

Konstantin Otdelnov in Tarantool
ну тут вопрос не в сортировке, а в скорости
источник

KO

Konstantin Otdelnov in Tarantool
мне казалось, по индексированному полю secondary сложность такого запроса должна быть примерно как при бинарном поиске
источник

DS

Dmitry Sharonov in Tarantool
я может не понимаю что вы делаете
источник

DS

Dmitry Sharonov in Tarantool
1) какая скорость в 1м случае, но если не пересортировать?
источник

DS

Dmitry Sharonov in Tarantool
2) что за бинарный поиск магический?
источник

KO

Konstantin Otdelnov in Tarantool
Dmitry Sharonov
1) какая скорость в 1м случае, но если не пересортировать?
в 1 случае я не сортирую ничего, просто делаю запрос в базу по диапазону min max
источник

KO

Konstantin Otdelnov in Tarantool
Dmitry Sharonov
2) что за бинарный поиск магический?
бинарный поиск обычный, со сложностью O(logn)
источник

DS

Dmitry Sharonov in Tarantool
Konstantin Otdelnov
в 1 случае я не сортирую ничего, просто делаю запрос в базу по диапазону min max
> table.sort(res, function(a,b)
   return a.secondary < b.secondary
end)
источник

DS

Dmitry Sharonov in Tarantool
Konstantin Otdelnov
бинарный поиск обычный, со сложностью O(logn)
в апи тарантула на селекты нет понятия бинарный поиск
источник

KO

Konstantin Otdelnov in Tarantool
ой, прошу прощения, это я не правильно оформил. это уже не относится к 1 случаю
источник

KO

Konstantin Otdelnov in Tarantool
Dmitry Sharonov
> table.sort(res, function(a,b)
   return a.secondary < b.secondary
end)
это предварительные действия для второго
источник

DS

Dmitry Sharonov in Tarantool
тогда можно полный код второго?
источник

DS

Dmitry Sharonov in Tarantool
и еще gc после него замерьте ;)
источник

DS

Dmitry Sharonov in Tarantool
и explain первого слчая покажите
источник

DS

Dmitry Sharonov in Tarantool
explain query plan
источник

KO

Konstantin Otdelnov in Tarantool
local data = database.getData() // получаем все данные из таблицы
table.sort(data, function(a,b)
   return a.secondary < b.secondary
end)

// начало замера времени
local minPos = utils.binSearchL(data, 1, #data, min)
local maxPos = utils.binSearchR(data, 1, #data, max)
local filtered = table.move(data, minPos, maxPos, 1, {})
// конец замера времени
источник

DS

Dmitry Sharonov in Tarantool
вы сравниваете несравниваемое
источник

DS

Dmitry Sharonov in Tarantool
(это во-первых)
источник

DS

Dmitry Sharonov in Tarantool
Dmitry Sharonov
explain query plan
а вот это во-вторых
источник

DS

Dmitry Sharonov in Tarantool
Dmitry Sharonov
вы сравниваете несравниваемое
т е во втором случае вы выкинули из замера вытягивание лишних рекордов в луа из С, как минимум
источник