Il y a des cas où PostgreSQL sur Windows paie une surcharge supplémentaire par rapport à d'autres solutions, en raison des compromis faits lors du portage.
Par exemple, PostgreSQL utilise un processus par connexion, MySQL utilise un thread. Sous Unix, ce n'est généralement pas une différence de performances notable, mais sous Windows, la création de nouveaux processus est très coûteuse (en raison de l'absence de l'appel système fork()). Pour cette raison, l'utilisation de connexions persistantes ou d'un pool de connexions est beaucoup plus important sous Windows lors de l'utilisation de PostgreSQL.
Un autre problème que j'ai constaté est que les premiers PostgreSQL sous Windows s'assurent par défaut que ses écritures passent par le cache d'écriture - même s'il est sauvegardé par batterie. AFAIK, MySQL ne le fait pas, et cela affectera considérablement les performances d'écriture. Maintenant, cela est en fait nécessaire si vous avez un matériel non sécurisé, tel qu'un lecteur bon marché. Mais si vous avez un cache en écriture sauvegardé par batterie, vous voulez le changer en fsync normal. Les versions modernes de PostgreSQL (certainement 8.3) utiliseront par défaut open_datasync à la place, ce qui devrait supprimer cette différence.
Vous ne mentionnez également rien sur la façon dont vous avez réglé la configuration de la base de données. Par défaut, le fichier de configuration livré avec PostgreSQL est très conservateur. Si vous n'y avez rien changé, vous devez absolument y jeter un coup d'œil. Des conseils de réglage sont disponibles sur le wiki PostgreSQL .
Pour donner plus de détails, vous devrez fournir beaucoup plus de détails sur exactement ce qui tourne lentement et sur la façon dont vous avez réglé votre base de données. Je suggérerais un e-mail à la liste de diffusion pgsql-general.