Предоставляет ли Erlang Mnesia select on an orders_set список в порядке Erlang Term?

В документации мне неясно, нужно ли мне перебирать по порядку с помощью next или, возможно, foldl (упоминается, что foldr идет в порядке, обратном order_set, поэтому предположительно foldl идет в том же порядке) или я могу используйте select и полагайтесь на то, что он упорядочен (при условии, что таблица orders_set)

1 ответ

если я могу использовать и полагаться на то, что он заказан (при условии, что таблица order_set)

ets: select / 2:

Для таблиц типа order_set объекты посещаются в том же порядке, что и при первом / следующем обходе . Это означает, что спецификация соответствия выполняется для объектов с ключами в первом / следующем порядке, а соответствующий список результатов находится в порядке этого выполнения .

ets:first / 1:

Возвращает первый ключ Key в таблице Tab. Для таблицы order_set возвращается первый ключ в порядке терминов Erlang .

Обход таблицы :

Обходы с использованием match и selectфункциям может не потребоваться сканирование всей таблицы в зависимости от того, как указан ключ. Шаблон соответствия с полностью связанным ключом (без каких-либо переменных соответствия) оптимизирует операцию до поиска одного ключа без какого-либо обхода таблицы вообще. Для Order_set частично связанный ключ ограничивает обход только сканированием подмножества таблицы на основе порядка терминов.

Для меня это не имело бы смысла для таблицы типа ordered_set для возврата результатов поиска в случайном порядке.

Другие вопросы по тегам