#select #erlang #mnesia #ordered-set
#выберите #erlang #mnesia #упорядоченный набор
Вопрос:
В документации мне не ясно, нужно ли мне перебирать по порядку с помощью next или, возможно, foldl (упоминается, что foldr идет в порядке, противоположном ordered_set, поэтому предварительно foldl идет в том же порядке), или я могу использовать select и полагаться на его упорядоченность (предполагая, что ordered_setтаблица)
Ответ №1:
могу ли я использовать
select
и полагаться на его упорядоченность (при условии, что таблица ordered_set)
Для таблиц типа ordered_set объекты посещаются в том же порядке, что и при первом / следующем обходе. Это означает, что спецификация соответствия выполняется для объектов с ключами в первом / следующем порядке, и соответствующий список результатов находится в порядке этого выполнения.
Возвращает первый ключ Key на вкладке table. Для таблицы ordered_set возвращается первый ключ в порядке терминов Erlang.
При обходах с использованием
match
select
функций и может не потребоваться сканирование всей таблицы в зависимости от того, как указан ключ. Шаблон соответствия с полностью связанным ключом (без каких-либо переменных соответствия) оптимизирует операцию для поиска по одному ключу без какого-либо обхода таблицы вообще. Для ordered_set частично связанный ключ ограничит обход только сканированием подмножества таблицы на основе порядка терминов.
Для меня не имело бы смысла, чтобы таблица типа ordered_set
возвращала результаты поиска в случайном порядке.