Предоставляет ли Erlang Mnesia select on an orders_set список в порядке Erlang Term?
В документации мне неясно, нужно ли мне перебирать по порядку с помощью next или, возможно, foldl (упоминается, что foldr идет в порядке, обратном order_set, поэтому предположительно foldl идет в том же порядке) или я могу используйте select и полагайтесь на то, что он упорядочен (при условии, что таблица orders_set)
1 ответ
если я могу использовать и полагаться на то, что он заказан (при условии, что таблица order_set)
Для таблиц типа order_set объекты посещаются в том же порядке, что и при первом / следующем обходе . Это означает, что спецификация соответствия выполняется для объектов с ключами в первом / следующем порядке, а соответствующий список результатов находится в порядке этого выполнения .
Возвращает первый ключ Key в таблице Tab. Для таблицы order_set возвращается первый ключ в порядке терминов Erlang .
Обходы с использованием
match
иselect
функциям может не потребоваться сканирование всей таблицы в зависимости от того, как указан ключ. Шаблон соответствия с полностью связанным ключом (без каких-либо переменных соответствия) оптимизирует операцию до поиска одного ключа без какого-либо обхода таблицы вообще. Для Order_set частично связанный ключ ограничивает обход только сканированием подмножества таблицы на основе порядка терминов.
Для меня это не имело бы смысла для таблицы типа
ordered_set
для возврата результатов поиска в случайном порядке.