Согласно этому ответу, полученному на репо rhea github:
https://github.com/amqp/rhea/issues/200#issuecomment-469220880
Фильтр должен быть описанным значением. Попробуйте что-то вроде этого:
blockquote>connection.open_receiver({ source: { address: 'amq.match', filter: { 'foo': amqp_types.wrap_described({ 'nat': 'it', 'prod': 'a22', 'x-match': 'all' }, 0x468C00000002) } } });
где:
var amqp_types = require('rhea').types;
Это работает только с Qpid cpp, оно не работает с ActiveMQ и Qpid java.
Не угадывайте, измеряйте. Попробуйте различные методы и посмотрите, какой из них самый короткий для выполнения. Также, используйте EXPLAIN , чтобы узнать, что будет делать PostgreSQL, и посмотрите, где вы можете оптимизировать. Очень немногие пользователи PostgreSQL могут правильно угадать самый быстрый запрос ...
Мне интересно, работает ли следующее и является ли оно более эффективным?
DELETE
FROM Employees e
USING EmployeesToDelete ed
WHERE id = ed.employee_id;
Это полностью зависит от вашей селективности по индексу.
PostgreSQL
имеет тенденцию использовать MERGE IN JOIN
для предикатов IN
, который имеет стабильное время выполнения.
На это не влияет количество строк, удовлетворяющих этому условию, при условии, что у вас уже есть упорядоченный набор результатов.
Для упорядоченного набора результатов требуется либо операция сортировки или индекс. Полный обход индекса очень неэффективен в PostgreSQL
по сравнению с SEQ SCAN
.
Предикат JOIN
, с другой стороны, может выиграть от использования NESTED LOOPS
, если ваш индекс очень избирателен, и использование HASH JOIN
является инсективным.
Почему вы не можете сначала удалить строки вместо их добавления в таблицу EmployeesToDelete
?
Или, если вам нужно отменить, просто добавьте Флаг «удален» для Сотрудников
, так что вы можете отменить удаление или сделать его постоянным, все в одной таблице?
Я не уверен в синтаксисе DELETE FROM ... USING
, но, как правило, подзапрос должен логически совпадать с INNER JOIN
в любом случае. Оптимизатор запросов к базе данных должен быть способен (и это только предположение) выполнять один и тот же план запросов для обоих.