Странная разница в скорости pickle.load в Python 2 и 3
Контекст такой:
( Collapse )
5) Неожиданный эффект заключается в том, что во 2й версии питона pickle.load работает примерно 60 секунд, в 3й - 6 секунд.
Допустим, мы хотим получить список слов (словарных статей), которые связаны с некоторым заданным словом отношениями синонимии или некоторыми морфологическими преобразованиями (например, белый-белеть).
В тезаурусе словарной базы отношения между словами оформляются с помощью бинарных отношений. Каждое такое отношение представляется как запись из трех главных компонентов: тип связи (синоним, антоним и т.д.), ссылка на первое слово и ссылка на второе слово.
Можно ли одним SQL запросом увидеть список связанных слов с учетом рекурсивного характера алгоритма обхода?
Для решения нужно использовать такую полезную вещь, как Common Table Expressions и их разновидность для рекурсивного обхода деревьев - см. http://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL. Само по себе CTE является просто локально определенным и именованным view в рамках конкретного запроса, вводимым с помощью ключевого слова with. Если добавить сюда возможность внутри CTE сослаться в FROM на это же самое CTE, то получается полноценное решение задачи без каких-либо процедурных костылей.
Вот запрос, работающий в FireBird версии 2.5 (насчет более ранних версий нужно проверять, но скорее всего в 2.1 этот фокус тоже работает):
( Collapse )