Существуют случаи, когда PostgreSQL в Windows платит дополнительные издержки по сравнению с другими решениями из-за компромиссов, сделанных при его портировании.
Например, PostgreSQL использует процесс для каждого соединения, MySQL использует поток. В Unix это обычно не заметная разница в производительности, но в Windows создание новых процессов очень дорого (из-за отсутствия системного вызова fork ()). По этой причине использование постоянных подключений или пула подключений намного более важно в Windows при использовании PostgreSQL.
Другая проблема, с которой я столкнулся, заключается в том, что ранний PostgreSQL в Windows по умолчанию будет проверять, что его записи проходят через кэш записи - даже если он работает от батареи. AFAIK, MySQL не делает этого, и это сильно повлияет на производительность записи. Теперь это действительно требуется, если у вас небезопасное оборудование, например дешевый диск. Но если у вас есть кэш записи с батарейным питанием, вы хотите изменить его на обычный fsync. Современные версии PostgreSQL (конечно, 8.3) по умолчанию вместо этого используют open_datasync, что должно устранить эту разницу.
Вы также ничего не упоминаете о том, как вы настроили конфигурацию базы данных. По умолчанию файл конфигурации, поставляемый с PostgreSQL, является очень консервативным. Если вы ничего не меняли там, вам обязательно нужно взглянуть на это. В PostgreSQL wiki .
есть несколько советов по настройке.
Чтобы получить более подробную информацию, вам нужно будет предоставить гораздо больше информации о том, что именно работает медленно, и как вы настроили свою базу данных. Я бы предложил электронное письмо в список рассылки pgsql-general.