Received: from maia.hub.org (maia-2.hub.org [200.46.204.251]) by mail.postgresql.org (Postfix) with ESMTP id 6882D1337BC2 for ; Tue, 7 Dec 2010 14:03:59 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.251]) (amavisd-maia, port 10024) with ESMTP id 41169-05 for ; Tue, 7 Dec 2010 18:03:51 +0000 (UTC) X-Greylist: delayed 00:18:54.573476 by SQLgrey-1.7.6 Received: from mail-ey0-f178.google.com (mail-ey0-f178.google.com [209.85.215.178]) by mail.postgresql.org (Postfix) with ESMTP id 691981337BDD for ; Tue, 7 Dec 2010 14:03:49 -0400 (AST) Received: by eyh5 with SMTP id 5so222477eyh.23 for ; Tue, 07 Dec 2010 10:03:48 -0800 (PST) Received: by 10.216.173.4 with SMTP id u4mr754690wel.87.1291743387677; Tue, 07 Dec 2010 09:36:27 -0800 (PST) From: Tom Polak MIME-Version: 1.0 X-Mailer: Microsoft Office Outlook 11 Thread-Index: AcuWNP40k6zqZW5vQaOsAcijRBoj1Q== X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7600.16543 Date: Tue, 7 Dec 2010 11:34:25 -0600 Message-ID: <378e24d1e3af88a49fbbb7c4d26f441a@mail.gmail.com> Subject: Compared MS SQL 2000 to Postgresql 9.0 on Windows To: pgsql-performance@postgresql.org Content-Type: multipart/related; boundary=0016367fb637c38b100496d5712e X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-1.189 tagged_above=-10 required=5 tests=BAYES_05=-0.5, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, T_FILL_THIS_FORM_SHORT=0.01 X-Spam-Level: X-Archive-Number: 201012/79 X-Sequence-Number: 41531 --0016367fb637c38b100496d5712e Content-Type: multipart/alternative; boundary=0016367fb637c38b0a0496d5712d --0016367fb637c38b0a0496d5712d Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable We are in the process of deciding on how to proceed on a database upgrade. We currently have MS SQL 2000 running on Windows 2003 (on my test server). I was shocked at the cost for MS SQL 2008 R2 for a new server (2 CPU license). I started comparing DB=92s and came across postgresql. It seeme= d to be exactly what I was after. All of our programming is in ASP.net. Since I am running MSSQL 2000 I have no benefit for .Net integration, so it is not a concern. I ran a head to head test of MS SQL 2000 and Postgresql 9.0. Both are running on Windows 2003. What I found was quite surprising and I am wondering if anyone can point out what is going on here. Here is the test I ran. I created 2 tables, the main table had 5 fields with a serial ID field. Th= e second table linked to table 1 for a state field. I had ASP.net via MSSQL create 1,000 records in the main table. Took 9.85 seconds to complete. Next I had ASP.net via Postgresql create 1,000 records. Took .65625 seconds. Postgresql smoked MS SQL server on that test. Next test is to use ASP.net and join all 1,000 rows with table 2 and then display the text out. MS SQL took 0.76 seconds to display select name,address,city,state,statename,stateid,other from pgtemp1 left join pgtemp2 on state=3Dstateid Then I did the same test via Postgresql and it took 8.85 seconds! I tried it again as I thought I did something wrong. I did a few tweaks such as increasing the shared buffers. Still the best I could get it to was 7.5 seconds. This is insanely slow compared to MSSQL 2000. What am I missing. Here is my SQL statement for postgresql: select name,address,city,state,statename,stateid,other from pgtemp1 left join pgtemp2 on state=3Dstateid Any ideas on why the Postgres server is soooo much slower on the joins? I am trying to understand what is going on here so please don=92t flame me. = Any advice is appreciated. *Thanks, Tom Polak Rockford Area Association of Realtors ** The information contained in this email message is intended only for the us= e of the individual or entity named. If the reader of this email is not the intended recipient or the employee or agent responsible for delivering it t= o the intended recipient, you are hereby notified that any dissemination, distribution or copying of this email is strictly prohibited. If you have received this email in error, please immediately notify us by telephone and reply email. Thank you.* *Although this email and any attachments are believed to be free of any viruses or other defects that might affect any computer system into which i= t is received and opened, it is the responsibility of the recipient to ensure that it is free of viruses, and the Rockford Area Association of Realtors hereby disclaims any liability for any loss or damage that results.* --0016367fb637c38b0a0496d5712d Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: quoted-printable

We are in the process of deciding on how to proceed on a database upgrade.=A0 We currently have MS SQL 2000 running on Windows 2003 (on my te= st server).=A0 I was shocked at the cost for MS SQL 2008 R2 for a new server (= 2 CPU license).=A0 I started comparing DB=92s and came across postgresql.=A0 It seemed to be exactly what I was after.=A0 All of our programming is in ASP.net.=A0 Since= I am running MSSQL 2000 I have no benefit for .Net integration, so it is not a concern.

=A0

I ran a head to head test of MS SQL 2000 and Postgresql 9.0.=A0 Bot= h are running on Windows 2003.=A0 What I found was quite surprising and I am wond= ering if anyone can point out what is going on here.=A0
Here is the test I ran.=A0
I created 2 tables, the main table had 5 fields with a serial ID field.=A0 = The second table linked to table 1 for a state field.

I had ASP.net via MSS= QL create 1,000 records in the main table. Took 9.85 seconds to complete.
Next I had ASP.net via Postgresql create 1,000 records.=A0 Took .65625 seco= nds.
Postgresql smoked MS SQL server on that test.

=A0

Next test is to use ASP.net and join all 1,000 rows with table 2 and then display the text out.=

MS SQL took 0.76 seco= nds to display
select name,address,city,state,statename,stateid,other from pgtemp1 left join pgtemp2 on state=3Dstateid

=A0

Then I did the same test via Postgresql and it took 8.85 seconds!=A0 I tried it again as I thought I did= something wrong.=A0 I did a few tweaks such as increasing the shared buffers.=A0 Stil= l the best I could get it to was 7.5 seconds.=A0 This is insanely slow compared t= o MSSQL 2000.=A0 What am I missing.=A0 Here is my SQL statement for postgresq= l:
select name,address,city,state,statename,stateid,other from pgtemp1 left join pgte= mp2 on state=3Dstateid

=A0

Any ideas on why the Postgres server is soooo much slower on the joins?=A0=A0 I am trying to understand what is going on here so please don= =92t flame me.=A0 Any advice is appreciated.=A0

=A0

=A0

Thanks,
Tom Polak
Rockford Area Association of Realtors

The information contained in this email message is intended only for the us= e of the individual or entity named.=A0 If the reader of this email is not the intended recipient or the employee or agent responsible for delivering it t= o the intended recipient, you are hereby notified that any dissemination, distribution or copying of this email is strictly prohibited.=A0 If you hav= e received this email in error, please immediately notify us by telephone and reply email.=A0 Thank you.

Although this email and any attachme= nts are believed to be free of any viruses or other defects that might affect a= ny computer system into which it is received and opened, it is the responsibil= ity of the recipient to ensure that it is free of viruses, and the Rockford Are= a Association of Realtors hereby disclaims any liability for any loss or dama= ge that results.

=A0

--0016367fb637c38b0a0496d5712d-- --0016367fb637c38b100496d5712e Content-Type: image/jpeg; name="image001.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 6454b8303e6ce187_0.1 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 ijzd3AEhwAsALACwAsALACwAsAf/2Q== --0016367fb637c38b100496d5712e--