установить enable_seqscan = off, через jdbc | Postgres - PullRequest
2 голосов
/ 02 марта 2012

У меня есть два запроса, вставить и обновить.Я провел тест через консоль postgres с большим набором данных и обнаружил, что postgres не собирает индекс.Чтобы решить эту проблему - я отключил seqscan для этих двух запросов и получил огромный прирост производительности;Postgres смог подобрать индексы для сканирования по таблице.

Проблема: я делаю то же самое с помощью jdbc

statement.executeUpdate("set enable_seqscan = off");
statement.executeUpdate("My_Insert_Query");
statement.executeUpdate("My_Update_Query");
statement.executeUpdate("set enable_seqscan = on");

Но похоже, что postgres не выключает seq_scan для изапросы выполняются слишком долго.

Мастер-таблица

Master_Id   auto-generated
child_unique     integer


Child Table
child_unique integer
Master_id integer

Insert into Master (child_unique) from Child as i WHERE NOT EXISTS ( SELECT * from Master where Master.child_unique = i.child_unique);

Update Child set Master_id = Master.Master_id from Master where Master.child_unique = Child.child_unique;

Для каждой уникальной строки в Child, которой нет в Master-файле, я вставляю ее в свою мастер-таблицу и получаюавтоматически генерирует Master_ID и вставляет его обратно в дочернюю таблицу.

Обе таблицы имеют индекс для child_unique.

Индекс выбирается в главной таблице, где в отличие от дочерней таблицы это не так.,Как я узнал?Использование таблицы pg_stat_all_indexes Postgres.

1 Ответ

1 голос
/ 02 марта 2012

Во-первых, я согласен с Фрэнком выше - исправьте реальную проблему.

Однако, если вы действительно хотите отключить seq-сканы, вы не предоставили никакой информации, чтобы помочь вам в этом.

Все эти операторы выполняются в одном соединении?(включите регистрацию в конфигурационном файле PostgreSQL, чтобы узнать)

Есть ли какие-либо другие биты, сгенерированные jdbc, отправляемые на сервер?(ведение журнала снова)

Что возвращает "show enable_seqscan" после первого оператора?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...