From Premsun@nsasia.co.th Mon Jan 28 07:18:53 2008 Received: from localhost (unknown [200.46.204.182]) by postgresql.org (Postfix) with ESMTP id 2933D2E2E50 for ; Mon, 28 Jan 2008 03:18:53 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.182]) (amavisd-maia, port 10024) with ESMTP id 82375-02 for ; Mon, 28 Jan 2008 03:18:39 -0400 (AST) Received: from astaro.nsasia.co.th (mail.nsasia.co.th [58.137.64.34]) by postgresql.org (Postfix) with ESMTP id F01502E029C for ; Mon, 28 Jan 2008 03:18:39 -0400 (AST) Received: from MailerDaemon by astaro.nsasia.co.th with local-bsmtp (Exim 4.63) (envelope-from ) id 1JJOGM-0006ZA-85 for pgsql-sql@postgresql.org; Mon, 28 Jan 2008 14:18:38 +0700 Received: from [192.168.200.39] (port=42628 helo=kloster.nsasia.co.th) by astaro.nsasia.co.th with esmtp (Exim 4.63) (envelope-from ) id 1JJOGJ-0006Z5-HZ for pgsql-sql@postgresql.org; Mon, 28 Jan 2008 14:18:35 +0700 Received: from Thailand-MTA by kloster.nsasia.co.th with Novell_GroupWise; Mon, 28 Jan 2008 14:18:35 +0700 Message-Id: <479DE418.C5F7.004C.0@nsasia.co.th> X-Mailer: Novell GroupWise Internet Agent 7.0.2 Date: Mon, 28 Jan 2008 14:18:24 +0700 From: "Premsun Choltanwanich" To: Subject: Slow Query problem Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="=__PartE3C534D0.0__=" X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=1.857 tagged_above=0 required=5 tests=AWL=0.294, BAYES_50=0.001, HTML_IMAGE_ONLY_28=1.561, HTML_MESSAGE=0.001 X-Spam-Level: * X-Archive-Number: 200801/214 X-Sequence-Number: 30067 This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=__PartE3C534D0.0__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Dear All, =20 I am currently using PostgreSQL database version 8.0.13. My problem = relates to a slow result when a query using a defined view joins to = another table for a result. =20 Background: I have 7 tables of invoice transactions. The tables are = slightly different in that they record different data (some different = columns in each table). There are about 250,000 records when a union view = is created. A simply query on this union performs satisfactorily. =20 The invoice table union view is then joined with a table of receipts = (which have a total of about 150,000 records). =20 =20 It takes around 3.5 seconds for "select * from view_transaction where = member_id =3D 999 and receipt_no is null" (which returns unpaid invoices).= =20 By hard coding I created a single table from the 7 invoice tables (instead = of creating a union) and then used it with receipt table. This time for = the same query improved to 1.8 seconds. =20 To further improve things I tried to code the selection rather than to use = a view, and so "select * from temp_transaction where member_id =3D 999 and = receipt_no is null" provided the result in .5 second. (2 records returned = containing the details of receipt_no, transaction_no, transaction_type, = transaction_amount, member_id). =20 I would prefer to be able to have completed the above by using unions and = views. Is it possible to do this, or am I better creating a permanent = table of invoices and writing the query as I did above? =20 Any comments on this and suggestions would be appreciated. If there is = documentation where I can read up please let me have a link. =20 Thank You, =20 Premsun =20 NETsolutions Asia Limited +66 (2) 237 7247 http://www.nsasia.co.th --=__PartE3C534D0.0__= Content-Type: multipart/related; boundary="=__PartE3C534D0.1__=" --=__PartE3C534D0.1__= Content-Type: text/html; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Description: HTML
Dear All,
 
I am currently using PostgreSQL database = version 8.0.13.  My problem relates to a slow result when a query = using a defined view joins to another table for a result.
 
Back= ground:  I have 7 tables of invoice transactions.  The tables = are slightly different in that they record different data (some different = columns in each table).  There are about 250,000 records when a union = view is created.  A simply query on this union performs satisfactorily= .
 
The invoice table union view is then joined with a table of receipts = (which have a total of about 150,000 records). 
 
It takes around 3.5 seconds for "select * from view_transaction where = member_id =3D 999  and receipt_no is null" (which returns unpaid = invoices).
 
By hard coding I created a single table from the 7 invoice tables = (instead of creating a union) and then used it with receipt table.  = This time for the same query improved to 1.8 seconds.
 
To further improve things I tried to code the selection rather than = to use a view, and so "select * from temp_transaction where member_id =3D = 999 and receipt_no is null" provided the result in .5 second. (2 records = returned containing the details of receipt_no, transaction_no, transaction_= type, transaction_amount, member_id).
 
I would prefer to be able to have completed the above by using unions = and views.  Is it possible to do this, or am I better creating a = permanent table of invoices and writing the query as I did above?
 
Any comments on this and suggestions would be appreciated.  If = there is documentation where I can read up please let me have a link.
&n= bsp;
Thank You,
 
Premsun
 

NETsoluti= ons Asia=20 Limited

+66 (2) = 237 7247

3D"NETsolut=

--=__PartE3C534D0.1__= Content-Type: IMAGE/jpg; name="IMAGE.jpg" Content-Transfer-Encoding: base64 Content-ID: Content-Description: JPEG image /9j/4AAQSkZJRgABAQEBLAEsAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRyUkdC IFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAA AADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFj cHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAA ABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD TAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJD AAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5 OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEA AAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAA AAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAA AA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBo dHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt IHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt IHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcg Q29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENv bmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAA ABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAA AAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAK AA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA mgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy ATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMC DAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMh Ay0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4E jASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3 BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDII RghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqY Cq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUAN Wg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBh EH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT 5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReu F9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9oc AhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCY IMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZcl xyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2 K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIx SjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+ oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXe RiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN 3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYP VlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1f D19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/ aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfBy S3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyB fOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuH n4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLj k02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6f HZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1 q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm4 0blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZG xsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnU y9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj 4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////2wBDAAIBAQIB AQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsM DAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAz/wAARCAAgAHIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAEC AwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0Kx wRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ 2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QA tREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk 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 --=__PartE3C534D0.1__=-- --=__PartE3C534D0.0__=-- From andreak@officenet.no Mon Jan 28 12:27:03 2008 Received: from localhost (unknown [200.46.204.184]) by postgresql.org (Postfix) with ESMTP id 842C72E01AE for ; Mon, 28 Jan 2008 08:27:03 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.184]) (amavisd-maia, port 10024) with ESMTP id 59300-06 for ; Mon, 28 Jan 2008 08:26:50 -0400 (AST) Received: from ns1.officenet.no (ns1.officenet.no [193.212.174.3]) by postgresql.org (Postfix) with ESMTP id E4B272E01BB for ; Mon, 28 Jan 2008 08:26:56 -0400 (AST) Received: from [89.10.27.2] (helo=andreak-laptop.local) by ns1.officenet.no with esmtpsa (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.63) (envelope-from ) id 1JJT4Z-00035y-Fr; Mon, 28 Jan 2008 13:26:53 +0100 From: Andreas Joseph Krogh Organization: OfficeNet AS To: pgsql-sql@postgresql.org Subject: Re: Slow Query problem Date: Mon, 28 Jan 2008 13:26:33 +0100 User-Agent: KMail/1.9.6 (enterprise 0.20070907.709405) Cc: "Premsun Choltanwanich" References: <479DE418.C5F7.004C.0@nsasia.co.th> In-Reply-To: <479DE418.C5F7.004C.0@nsasia.co.th> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-Id: <200801281326.33832.andreak@officenet.no> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200801/215 X-Sequence-Number: 30068 On Monday 28 January 2008 08:18:24 Premsun Choltanwanich wrote: > Dear All, > > I am currently using PostgreSQL database version 8.0.13. My problem > relates to a slow result when a query using a defined view joins to anoth= er > table for a result. > > Background: I have 7 tables of invoice transactions. The tables are > slightly different in that they record different data (some different > columns in each table). There are about 250,000 records when a union view > is created. A simply query on this union performs satisfactorily. > > The invoice table union view is then joined with a table of receipts (whi= ch > have a total of about 150,000 records). > > It takes around 3.5 seconds for "select * from view_transaction where > member_id =3D 999 and receipt_no is null" (which returns unpaid invoices= ). > > By hard coding I created a single table from the 7 invoice tables (instead > of creating a union) and then used it with receipt table. This time for > the same query improved to 1.8 seconds. > > To further improve things I tried to code the selection rather than to use > a view, and so "select * from temp_transaction where member_id =3D 999 and > receipt_no is null" provided the result in .5 second. (2 records returned > containing the details of receipt_no, transaction_no, transaction_type, > transaction_amount, member_id). > > I would prefer to be able to have completed the above by using unions and > views. Is it possible to do this, or am I better creating a permanent > table of invoices and writing the query as I did above? > > Any comments on this and suggestions would be appreciated. If there is > documentation where I can read up please let me have a link. It is very hard to help without you providing the schema for the tables/vie= ws=20 involved. It sounds like you don't have any indexes if you experience=20 performance-problems on queries like "select * from view_transaction where= =20 member_id =3D 999 and receipt_no is null". But again, without the definiti= on=20 of the view and underlying tables, it's very hard to help. =2D-=20 Andreas Joseph Krogh Senior Software Developer / Manager =2D-----------------------+---------------------------------------------+ OfficeNet AS | The most difficult thing in the world is to | Karenslyst All=C3=A9 11 | know how to do a thing and to watch | PO. Box 529 Sk=C3=B8yen | somebody else doing it wrong, without | 0214 Oslo | comment. | NORWAY | | Tlf: +47 24 15 38 90 | | =46ax: +47 24 15 38 91 | | Mobile: +47 909 56 963 | | =2D-----------------------+---------------------------------------------+ From tgl@sss.pgh.pa.us Mon Jan 28 17:20:30 2008 Received: from localhost (unknown [200.46.204.187]) by postgresql.org (Postfix) with ESMTP id 4A69A2E00A0 for ; Mon, 28 Jan 2008 13:20:30 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.187]) (amavisd-maia, port 10024) with ESMTP id 16507-05 for ; Mon, 28 Jan 2008 13:20:18 -0400 (AST) Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 704FD2E0075 for ; Mon, 28 Jan 2008 13:20:24 -0400 (AST) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m0SHK6FE003742; Mon, 28 Jan 2008 12:20:06 -0500 (EST) To: Andreas Joseph Krogh cc: pgsql-sql@postgresql.org, "Premsun Choltanwanich" Subject: Re: Slow Query problem In-reply-to: <200801281326.33832.andreak@officenet.no> References: <479DE418.C5F7.004C.0@nsasia.co.th> <200801281326.33832.andreak@officenet.no> Comments: In-reply-to Andreas Joseph Krogh message dated "Mon, 28 Jan 2008 13:26:33 +0100" Date: Mon, 28 Jan 2008 12:20:06 -0500 Message-ID: <3741.1201540806@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200801/216 X-Sequence-Number: 30069 Andreas Joseph Krogh writes: > On Monday 28 January 2008 08:18:24 Premsun Choltanwanich wrote: >> I am currently using PostgreSQL database version 8.0.13. My problem >> relates to a slow result when a query using a defined view joins to another >> table for a result. > It is very hard to help without you providing the schema for the tables/views > involved. One suggestion is that 8.2.x is significantly smarter about joins to unions than previous releases were. Whether this would help in your particular case is impossible to say, though, without more detail. regards, tom lane From Premsun@nsasia.co.th Tue Jan 29 08:18:24 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 1BAEA2E004E for ; Tue, 29 Jan 2008 04:18:24 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 54666-07 for ; Tue, 29 Jan 2008 04:18:18 -0400 (AST) Received: from astaro.nsasia.co.th (mail.nsasia.co.th [58.137.64.34]) by postgresql.org (Postfix) with ESMTP id 57D062E0148 for ; Tue, 29 Jan 2008 04:18:17 -0400 (AST) Received: from MailerDaemon by astaro.nsasia.co.th with local-bsmtp (Exim 4.63) (envelope-from ) id 1JJlfY-00043h-9I for pgsql-sql@postgresql.org; Tue, 29 Jan 2008 15:18:12 +0700 Received: from [192.168.200.39] (port=50235 helo=kloster.nsasia.co.th) by astaro.nsasia.co.th with esmtp (Exim 4.63) (envelope-from ) id 1JJlfV-00043V-Q3 for pgsql-sql@postgresql.org; Tue, 29 Jan 2008 15:18:09 +0700 Received: from Thailand-MTA by kloster.nsasia.co.th with Novell_GroupWise; Tue, 29 Jan 2008 15:18:09 +0700 Message-Id: <479F4382.C5F7.004C.0@nsasia.co.th> X-Mailer: Novell GroupWise Internet Agent 7.0.2 Date: Tue, 29 Jan 2008 15:18:00 +0700 From: "Premsun Choltanwanich" To: "Andreas Joseph Krogh" , "Tom Lane" Cc: Subject: Re: Slow Query problem References: <479DE418.C5F7.004C.0@nsasia.co.th> <200801281326.33832.andreak@officenet.no><200801281326.33832.andreak@officenet.no> <3741.1201540806@sss.pgh.pa.us> In-Reply-To: <3741.1201540806@sss.pgh.pa.us> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="=__Part785EAC28.2__=" X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=1.337 tagged_above=0 required=5 tests=AWL=-0.031, BAYES_40=-0.185, HTML_IMAGE_ONLY_24=1.552, HTML_MESSAGE=0.001 X-Spam-Level: * X-Archive-Number: 200801/219 X-Sequence-Number: 30072 This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=__Part785EAC28.2__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable I already install the latest version of PostgreSQL on my machine then try = again. I found that it has a little improvement about 0.5 second but I = think it still slow. =20 What is the 'more detail' you need? =20 Any other advise? =20 =20 =20 >>> Tom Lane 1/29/2008 0:20 >>> Andreas Joseph Krogh writes: > On Monday 28 January 2008 08:18:24 Premsun Choltanwanich wrote: >> I am currently using PostgreSQL database version 8.0.13. My problem >> relates to a slow result when a query using a defined view joins to = another >> table for a result. > It is very hard to help without you providing the schema for the = tables/views > involved. One suggestion is that 8.2.x is significantly smarter about joins to unions than previous releases were. Whether this would help in your particular case is impossible to say, though, without more detail. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match NETsolutions Asia Limited +66 (2) 237 7247 http://www.nsasia.co.th --=__Part785EAC28.2__= Content-Type: multipart/related; boundary="=__Part785EAC28.3__=" --=__Part785EAC28.3__= Content-Type: text/html; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Description: HTML
I already install the latest version of PostgreSQL on my machine then = try again. I found that it has a little improvement about 0.5 second but I = think it still slow.
 
What is the 'more detail' you need?
 
Any other advise?
 
 
 


>>> Tom Lane <tgl@sss.pgh.pa.us> 1/29/2008 = 0:20 >>>
Andreas Joseph Krogh <andreak@officenet.no> = writes:
> On Monday 28 January 2008 08:18:24 Premsun Choltanwanich = wrote:
>> I am currently using PostgreSQL database version = 8.0.13.  My problem
>> relates to a slow result when a query = using a defined view joins to another
>> table for a result.
> It is very hard to help without you providing the schema for the = tables/views
> involved.

One suggestion is that 8.2.x is = significantly smarter about joins to
unions than previous releases = were.  Whether this would help in your
particular case is = impossible to say, though, without more detail.

regards, tom = lane

---------------------------(end of broadcast)------------------= ---------
TIP 9: In versions below 8.0, the planner will ignore your = desire to
       choose an index scan if = your joining column's datatypes do not
     &nb= sp; match

NETsoluti= ons Asia=20 Limited

+66 (2) = 237 7247

3D"NETsolut=

--=__Part785EAC28.3__= Content-Type: IMAGE/jpg; name="IMAGE.jpg" Content-Transfer-Encoding: base64 Content-ID: Content-Description: JPEG image /9j/4AAQSkZJRgABAQEBLAEsAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRyUkdC IFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAA AADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFj cHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAA ABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD TAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJD AAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5 OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEA AAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAA AAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAA AA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBo dHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt IHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt IHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcg Q29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENv bmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAA ABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAA AAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAK AA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA mgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy ATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMC DAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMh Ay0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4E jASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3 BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDII RghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqY Cq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUAN Wg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBh EH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT 5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReu F9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9oc AhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCY IMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZcl xyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2 K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIx SjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+ oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXe RiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN 3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYP VlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1f D19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/ aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfBy S3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyB fOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuH n4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLj k02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6f HZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1 q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm4 0blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZG xsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnU y9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj 4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////2wBDAAIBAQIB AQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsM DAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAz/wAARCAAgAHIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAEC AwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0Kx wRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ 2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QA tREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk 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 --=__Part785EAC28.3__=-- --=__Part785EAC28.2__=-- From andreak@officenet.no Tue Jan 29 10:26:03 2008 Received: from localhost (unknown [200.46.204.187]) by postgresql.org (Postfix) with ESMTP id 512902E0276 for ; Tue, 29 Jan 2008 06:26:03 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.187]) (amavisd-maia, port 10024) with ESMTP id 03082-09 for ; Tue, 29 Jan 2008 06:25:37 -0400 (AST) Received: from ns1.officenet.no (ns1.officenet.no [193.212.174.3]) by postgresql.org (Postfix) with ESMTP id 2A5E92E00DB for ; Tue, 29 Jan 2008 06:25:51 -0400 (AST) Received: from [89.10.27.2] (helo=andreak-laptop.local) by ns1.officenet.no with esmtpsa (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.63) (envelope-from ) id 1JJnep-0007sg-PJ; Tue, 29 Jan 2008 11:25:41 +0100 From: Andreas Joseph Krogh Organization: OfficeNet AS To: "Premsun Choltanwanich" Subject: Re: Slow Query problem Date: Tue, 29 Jan 2008 11:24:23 +0100 User-Agent: KMail/1.9.6 (enterprise 0.20070907.709405) Cc: "Tom Lane" , pgsql-sql@postgresql.org References: <479DE418.C5F7.004C.0@nsasia.co.th> <3741.1201540806@sss.pgh.pa.us> <479F4382.C5F7.004C.0@nsasia.co.th> In-Reply-To: <479F4382.C5F7.004C.0@nsasia.co.th> MIME-Version: 1.0 Content-Disposition: inline Message-Id: <200801291124.23660.andreak@officenet.no> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200801/220 X-Sequence-Number: 30073 On Tuesday 29 January 2008 09:18:00 Premsun Choltanwanich wrote: > I already install the latest version of PostgreSQL on my machine then try > again. I found that it has a little improvement about 0.5 second but I > think it still slow. > > What is the 'more detail' you need? Your tables, views and index definitions. > Any other advise? You haven't provided any information on how your tables/views look like and= =20 what indexes you have defined. A rule of thumb is to define an index for ea= ch=20 column you join on. =2D-=20 Andreas Joseph Krogh Senior Software Developer / Manager =2D-----------------------+---------------------------------------------+ OfficeNet AS | The most difficult thing in the world is to | Karenslyst All=C3=A9 11 | know how to do a thing and to watch | PO. Box 529 Sk=C3=B8yen | somebody else doing it wrong, without | 0214 Oslo | comment. | NORWAY | | Tlf: +47 24 15 38 90 | | =46ax: +47 24 15 38 91 | | Mobile: +47 909 56 963 | | =2D-----------------------+---------------------------------------------+ From Premsun@nsasia.co.th Wed Jan 30 03:50:11 2008 Received: from localhost (unknown [200.46.204.182]) by postgresql.org (Postfix) with ESMTP id D649F2E00DF for ; Tue, 29 Jan 2008 23:50:11 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.182]) (amavisd-maia, port 10024) with ESMTP id 97547-03-3 for ; Tue, 29 Jan 2008 23:49:53 -0400 (AST) Received: from astaro.nsasia.co.th (mail.nsasia.co.th [58.137.64.34]) by postgresql.org (Postfix) with ESMTP id 26C0F2E2DD1 for ; Tue, 29 Jan 2008 23:39:01 -0400 (AST) Received: from MailerDaemon by astaro.nsasia.co.th with local-bsmtp (Exim 4.63) (envelope-from ) id 1JK3ms-0002bV-Gl for pgsql-sql@postgresql.org; Wed, 30 Jan 2008 10:38:58 +0700 Received: from [192.168.200.39] (port=49839 helo=kloster.nsasia.co.th) by astaro.nsasia.co.th with esmtp (Exim 4.63) (envelope-from ) id 1JK3mr-0002bN-Jc for pgsql-sql@postgresql.org; Wed, 30 Jan 2008 10:38:57 +0700 Received: from Thailand-MTA by kloster.nsasia.co.th with Novell_GroupWise; Wed, 30 Jan 2008 10:38:57 +0700 Message-Id: <47A0539B.C5F7.004C.0@nsasia.co.th> X-Mailer: Novell GroupWise Internet Agent 7.0.2 Date: Wed, 30 Jan 2008 10:38:49 +0700 From: "Premsun Choltanwanich" To: "Andreas Joseph Krogh" , Subject: Re: Slow Query problem References: <479DE418.C5F7.004C.0@nsasia.co.th> <200801281326.33832.andreak@officenet.no> In-Reply-To: <200801281326.33832.andreak@officenet.no> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="=__Part183ECD59.2__=" X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.47 tagged_above=0 required=5 tests=AWL=0.468, BAYES_50=0.001, HTML_MESSAGE=0.001 X-Spam-Level: X-Archive-Number: 200801/224 X-Sequence-Number: 30077 This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=__Part183ECD59.2__= Content-Type: text/plain; charset=Windows-874 Content-Transfer-Encoding: quoted-printable SQL I use for create related table and view: =20 =20 CREATE TABLE t_payment_detail ( "sysid" bigserial NOT NULL, receiptno varchar(10) NOT NULL, refpath varchar(255) NOT NULL, refno varchar(100) NOT NULL, CONSTRAINT t_payment_detail_pkey PRIMARY KEY ("sysid") )=20 WITHOUT OIDS; =20 CREATE TABLE t_receipt_cancel ( receiptsysid int8 NOT NULL, amount float8 NOT NULL, receiptcomment varchar(255) NOT NULL, CONSTRAINT t_receipt_cancel_pkey PRIMARY KEY (receiptsysid) )=20 WITH OIDS; =20 CREATE TABLE t_charge ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, chargelistsysid int8 NOT NULL, refno varchar(20) NOT NULL, chargedate timestamp NOT NULL, quantity float8 NOT NULL, unitprice float8 NOT NULL, amount float8 NOT NULL, vat float8 NOT NULL, service float8 NOT NULL, CONSTRAINT t_charge_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 CREATE TABLE t_posbill ( "sysid" bigserial NOT NULL, billno varchar(20) NOT NULL DEFAULT ''::character varying, billdate timestamp NOT NULL DEFAULT '1601-01-01 00:00:00'::timestamp without time zone, mbrsysid int8 NOT NULL DEFAULT 0, totalamount float8 NOT NULL DEFAULT 0, totalvat float8 NOT NULL DEFAULT 0, totalservice float8 NOT NULL DEFAULT 0, CONSTRAINT t_posbill_pkey PRIMARY KEY ("sysid") )=20 WITHOUT OIDS; =20 =20 =20 CREATE TABLE t_creditnotes ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, chargelistsysid int8 NOT NULL, chitno varchar(20) NOT NULL, chitdate timestamp NOT NULL, refno varchar(20) NOT NULL, chargedate timestamp NOT NULL, quantity float8 NOT NULL, unitprice float8 NOT NULL, amount float8 NOT NULL, vat float8 NOT NULL, service float8 NOT NULL, CONSTRAINT t_creditnotes_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 =20 =20 CREATE TABLE t_invoice ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, chargelistsysid int8 NOT NULL, invno varchar(50) NOT NULL, invdate timestamp NOT NULL, totalvalue float8 NOT NULL, totalvat float8 NOT NULL, totalservice float8 NOT NULL, CONSTRAINT t_invoice_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 CREATE TABLE t_receipt ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, receiptno varchar(10) NOT NULL, receiptdate timestamp NOT NULL, paymethod varchar(30) NOT NULL, amount float8 NOT NULL, flagprint bool NOT NULL DEFAULT false, CONSTRAINT t_receipt_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 CREATE TABLE t_moneytransfer ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, transferno varchar(10) NOT NULL, transferdate timestamp NOT NULL, transferamount float8 NOT NULL, CONSTRAINT t_moneytransfer_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 =20 =20 CREATE TABLE t_carryforward ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, cfno varchar(10) NOT NULL, cfdate timestamp NOT NULL, amount float8 NOT NULL, CONSTRAINT t_carryforward_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 CREATE OR REPLACE VIEW v_invtransaction_main AS=20 ((((( SELECT 'C'::text || t_charge.refno::text AS transinvno, t_charge.mbrsysid, 'CHIT'::text AS particular, t_charge.chargedate AS transdate, sum(t_charge.amount) AS totamount, sum(t_charge.vat) AS totvat, sum(t_charge.service) AS totservice, 'Dr' AS cr_dr, t_charge.refno AS transrefno FROM t_charge GROUP BY 'C'::text || t_charge.refno::text, t_charge.mbrsysid,=20 'CHIT'::text , t_charge.chargedate, t_charge.refno UNION ALL=20 SELECT 'B'::text || t_posbill.billno::text AS transinvno, t_posbill.mbrsysid, 'POS'::text AS particular, t_posbill.billdate AS transdate, t_posbill.totalamount AS totamount, t_posbill.totalvat AS totvat, t_posbill.totalservice AS totservice, 'Dr' AS cr_dr, t_posbill.billno AS transrefno FROM t_posbill) UNION ALL=20 SELECT 'CN'::text || t_creditnotes.refno::text AS transinvno, t_creditnotes.mbrsysid, 'Credit Note'::text AS particular, t_creditnotes.chargedate AS transdate, - sum(t_creditnotes.amount) AS totamount, - s um(t_creditnotes.vat) AS totvat, - sum(t_creditnotes.service) AS totservice, 'Cr' AS cr_dr, t_creditnotes.refno AS transrefno FROM t_creditnotes GROUP BY 'CN'::text || t_creditnotes.refno::text, t_creditnotes.mbrsysid, 'Credit Note'::text, t_creditnotes.chargedate, t_creditnotes.refno) UNION ALL=20 SELECT 'I'::text || t_invoice.invno::text AS transinvno, t_invoice.mbrsysid, 'Monthly Invoice '::text AS particular, t_invoice.invdate AS transdate, sum(t_invoice.totalvalue) AS totamount, sum(t_invoice.totalvat) AS totvat, sum(t_invoice.totalservice) AS totservice, 'Dr' AS cr_dr, t_invoice.invno AS transrefno FROM t_invoice GROUP BY 'I'::text || t_invoice.invno::text, t_invoice.mbrsysid, 'Monthly Invoice'::text, t_invoice.invdate,t_invoice.invno) UNION ALL=20 SELECT 'P'::text || t_receipt.receiptno::text AS transinvno, t_receipt.mbrsysid, t_receipt.paymethod::text AS particular, t_receipt.receiptdate AS transdate, t_receipt.amount * (- 1::double precision) AS totamount, '0' AS totvat, '0' AS totservice, 'Cr' AS cr_dr, t_receipt.receiptno AS transrefno FROM t_receipt WHERE NOT (t_receipt."sysid" IN ( SELECT t_receipt_cancel.receiptsysid FROM t_receipt_cancel))) UNION ALL=20 SELECT 'T'::text || t_moneytransfer.transferno::text AS transinvno, t_moneytransfer.mbrsysid, 'Transfer'::text AS particular, t_moneytransfer.transferdate AS transdate, t_moneytransfer.transferamount * (- 1::double precision) AS totamount, '0' AS totvat, '0' AS totservice, 'Dr' AS cr_dr, t_moneytransfer.transferno AS transrefno FROM t_moneytransfer) UNION ALL=20 SELECT 'CF'::text || t_carryforward.cfno::text AS transinvno, t_carryforward.mbrsysid, 'Carry Forward'::text AS particular, t_carryforward.cfdate AS transdate, t_carryforward.amount AS totamount, '0' AS totvat, '0' AS totservice, 'Dr' AS cr_dr, t_carryforward.cfno AS transrefno FROM t_carryforward; =20 =20 =20 =20 =20 CREATE OR REPLACE VIEW v_invtransaction AS=20 SELECT t_payment_detail.receiptno, v_invtransaction_main.transinvno, v_invtransaction_main.mbrsysid, v_invtransaction_main.particular, v_invtransaction_main.transdate, v_invtransaction_main.totamount, v_invtransaction_main.totvat, v_invtransaction_main.totservice, v_invtransaction_main.cr_dr, v_invtransaction_main.transrefno FROM t_payment_detail RIGHT JOIN v_invtransaction_main ON v_invtransaction_main.transrefno::text =3D t_payment_detail.refno::text AND v_invtransaction_main.particular =3D t_payment_detail.refpath::text; =20 =20 =20 =20 =20 =20 =20 >>> Andreas Joseph Krogh 1/28/2008 19:26 >>> On Monday 28 January 2008 08:18:24 Premsun Choltanwanich wrote: > Dear All, > > I am currently using PostgreSQL database version 8.0.13. My problem > relates to a slow result when a query using a defined view joins to another > table for a result. > > Background: I have 7 tables of invoice transactions. The tables are > slightly different in that they record different data (some different > columns in each table). There are about 250,000 records when a union view > is created. A simply query on this union performs satisfactorily. > > The invoice table union view is then joined with a table of receipts (which > have a total of about 150,000 records). > > It takes around 3.5 seconds for "select * from view_transaction where > member_id =3D 999 and receipt_no is null" (which returns unpaid invoices). > > By hard coding I created a single table from the 7 invoice tables (instead > of creating a union) and then used it with receipt table. This time for > the same query improved to 1.8 seconds. > > To further improve things I tried to code the selection rather than to use > a view, and so "select * from temp_transaction where member_id =3D 999 and > receipt_no is null" provided the result in .5 second. (2 records returned > containing the details of receipt_no, transaction_no, transaction_type, > transaction_amount, member_id). > > I would prefer to be able to have completed the above by using unions and > views. Is it possible to do this, or am I better creating a permanent > table of invoices and writing the query as I did above? > > Any comments on this and suggestions would be appreciated. If there is > documentation where I can read up please let me have a link. It is very hard to help without you providing the schema for the tables/views=20 involved. It sounds like you don't have any indexes if you experience=20 performance-problems on queries like "select * from view_transaction where=20 member_id =3D 999 and receipt_no is null". But again, without the definition=20 of the view and underlying tables, it's very hard to help. --=20 Andreas Joseph Krogh Senior Software Developer / Manager ------------------------+---------------------------------------------+ OfficeNet AS | The most difficult thing in the world is to | Karenslyst All* 11 | know how to do a thing and to watch =20 | PO. Box 529 Sk*yen | somebody else doing it wrong, without =20 | 0214 Oslo | comment. =20 | NORWAY | =20 | Tlf: +47 24 15 38 90 | =20 | Fax: +47 24 15 38 91 | =20 | Mobile: +47 909 56 963 | =20 | ------------------------+---------------------------------------------+ NETsolutions Asia Limited +66 (2) 237 7247 http://www.nsasia.co.th --=__Part183ECD59.2__= Content-Type: multipart/related; boundary="=__Part183ECD59.3__=" --=__Part183ECD59.3__= Content-Type: text/html; charset=Windows-874 Content-Transfer-Encoding: quoted-printable Content-Description: HTML
SQL I use for create related table and view:
 
 
CREATE TABLE t_payment_detail
(
  "sysid" bigserial NOT = NULL,
  receiptno varchar(10) NOT NULL,
  refpath = varchar(255) NOT NULL,
  refno varchar(100) NOT NULL,
  = CONSTRAINT t_payment_detail_pkey PRIMARY KEY ("sysid")
)
WITHOUT = OIDS;
 
CREATE TABLE t_receipt_cancel
(
  receiptsysid int8 NOT = NULL,
  amount float8 NOT NULL,
  receiptcomment varchar(25= 5) NOT NULL,
  CONSTRAINT t_receipt_cancel_pkey PRIMARY KEY = (receiptsysid)
)
WITH OIDS;
 
CREATE TABLE t_charge
(
  "sysid" bigserial NOT NULL,
&n= bsp; mbrsysid int8 NOT NULL,
  chargelistsysid int8 NOT NULL,
&n= bsp; refno varchar(20) NOT NULL,
  chargedate timestamp NOT = NULL,
  quantity float8 NOT NULL,
  unitprice float8 NOT = NULL,
  amount float8 NOT NULL,
  vat float8 NOT NULL,
&= nbsp; service float8 NOT NULL,
  CONSTRAINT t_charge_pkey PRIMARY = KEY ("sysid")
)
WITH OIDS;
 

CREATE TABLE t_posbill
(
  "sysid" bigserial NOT = NULL,
  billno varchar(20) NOT NULL DEFAULT ''::character = varying,
  billdate timestamp NOT NULL DEFAULT '1601-01-01 = 00:00:00'::timestamp without time zone,
  mbrsysid int8 NOT NULL = DEFAULT 0,
  totalamount float8 NOT NULL DEFAULT 0,
  = totalvat float8 NOT NULL DEFAULT 0,
  totalservice float8 NOT NULL = DEFAULT 0,
  CONSTRAINT t_posbill_pkey PRIMARY KEY ("sysid")
) =
WITHOUT OIDS;
 
 
 
CREATE TABLE t_creditnotes
(
  "sysid" bigserial NOT = NULL,
  mbrsysid int8 NOT NULL,
  chargelistsysid int8 NOT = NULL,
  chitno varchar(20) NOT NULL,
  chitdate timestamp = NOT NULL,
  refno varchar(20) NOT NULL,
  chargedate = timestamp NOT NULL,
  quantity float8 NOT NULL,
  = unitprice float8 NOT NULL,
  amount float8 NOT NULL,
  vat = float8 NOT NULL,
  service float8 NOT NULL,
  CONSTRAINT = t_creditnotes_pkey PRIMARY KEY ("sysid")
)
WITH OIDS;
 
 
 
CREATE TABLE t_invoice
(
  "sysid" bigserial NOT NULL,
&= nbsp; mbrsysid int8 NOT NULL,
  chargelistsysid int8 NOT NULL,
&= nbsp; invno varchar(50) NOT NULL,
  invdate timestamp NOT = NULL,
  totalvalue float8 NOT NULL,
  totalvat float8 NOT = NULL,
  totalservice float8 NOT NULL,
  CONSTRAINT = t_invoice_pkey PRIMARY KEY ("sysid")
)
WITH OIDS;
 
CREATE TABLE t_receipt
(
  "sysid" bigserial NOT NULL,
&= nbsp; mbrsysid int8 NOT NULL,
  receiptno varchar(10) NOT = NULL,
  receiptdate timestamp NOT NULL,
  paymethod = varchar(30) NOT NULL,
  amount float8 NOT NULL,
  = flagprint bool NOT NULL DEFAULT false,
  CONSTRAINT t_receipt_pkey = PRIMARY KEY ("sysid")
)
WITH OIDS;
 
CREATE TABLE t_moneytransfer
(
  "sysid" bigserial NOT = NULL,
  mbrsysid int8 NOT NULL,
  transferno varchar(10) = NOT NULL,
  transferdate timestamp NOT NULL,
  transferamou= nt float8 NOT NULL,
  CONSTRAINT t_moneytransfer_pkey PRIMARY KEY = ("sysid")
)
WITH OIDS;
 
 
 
CREATE TABLE t_carryforward
(
  "sysid" bigserial NOT = NULL,
  mbrsysid int8 NOT NULL,
  cfno varchar(10) NOT = NULL,
  cfdate timestamp NOT NULL,
  amount float8 NOT = NULL,
  CONSTRAINT t_carryforward_pkey PRIMARY KEY ("sysid")
) =
WITH OIDS;
 

CREATE OR REPLACE VIEW v_invtransaction_main AS
((((( SELECT = 'C'::text || t_charge.refno::text AS transinvno, t_charge.mbrsysid, = 'CHIT'::text AS particular, t_charge.chargedate AS transdate, sum(t_charge.= amount) AS totamount, sum(t_charge.vat) AS totvat, sum(t_charge.service) = AS totservice, 'Dr' AS cr_dr, t_charge.refno AS transrefno
   = FROM t_charge
  GROUP BY 'C'::text || t_charge.refno::text, = t_charge.mbrsysid,  'CHIT'::text , t_charge.chargedate, t_charge.refno=
UNION ALL
 SELECT 'B'::text || t_posbill.billno::text AS = transinvno, t_posbill.mbrsysid, 'POS'::text AS particular, t_posbill.billda= te AS transdate, t_posbill.totalamount AS totamount, t_posbill.totalvat AS = totvat, t_posbill.totalservice AS totservice, 'Dr' AS cr_dr, t_posbill.bill= no AS transrefno
   FROM t_posbill)
UNION ALL
 SEL= ECT 'CN'::text || t_creditnotes.refno::text AS transinvno, t_creditnotes.mb= rsysid, 'Credit Note'::text AS particular, t_creditnotes.chargedate AS = transdate, - sum(t_creditnotes.amount) AS totamount, - sum(t_creditnotes.va= t) AS totvat, - sum(t_creditnotes.service) AS totservice, 'Cr' AS cr_dr, = t_creditnotes.refno AS transrefno
   FROM t_creditnotes
&nb= sp; GROUP BY 'CN'::text || t_creditnotes.refno::text, t_creditnotes.mbrsysi= d, 'Credit Note'::text, t_creditnotes.chargedate, t_creditnotes.refno)
U= NION ALL
 SELECT 'I'::text || t_invoice.invno::text AS transinvno,= t_invoice.mbrsysid, 'Monthly Invoice '::text AS particular, t_invoice.invd= ate AS transdate, sum(t_invoice.totalvalue) AS totamount, sum(t_invoice.tot= alvat) AS totvat, sum(t_invoice.totalservice) AS totservice, 'Dr' AS = cr_dr, t_invoice.invno AS transrefno
   FROM t_invoice
&nbs= p; GROUP BY 'I'::text || t_invoice.invno::text, t_invoice.mbrsysid, = 'Monthly Invoice'::text, t_invoice.invdate,t_invoice.invno)
UNION ALL =
 SELECT 'P'::text || t_receipt.receiptno::text AS transinvno, = t_receipt.mbrsysid, t_receipt.paymethod::text AS particular, t_receipt.rece= iptdate AS transdate, t_receipt.amount * (- 1::double precision) AS = totamount, '0' AS totvat, '0' AS totservice, 'Cr' AS cr_dr, t_receipt.recei= ptno AS transrefno
   FROM t_receipt
  WHERE NOT = (t_receipt."sysid" IN ( SELECT t_receipt_cancel.receiptsysid FROM = t_receipt_cancel)))
UNION ALL
 SELECT 'T'::text || t_moneytrans= fer.transferno::text AS transinvno, t_moneytransfer.mbrsysid, 'Transfer'::t= ext AS particular, t_moneytransfer.transferdate AS transdate, t_moneytransf= er.transferamount * (- 1::double precision) AS totamount, '0' AS totvat, = '0' AS totservice, 'Dr' AS cr_dr, t_moneytransfer.transferno AS transrefno<= BR>   FROM t_moneytransfer)
UNION ALL
 SELECT = 'CF'::text || t_carryforward.cfno::text AS transinvno, t_carryforward.mbrsy= sid, 'Carry Forward'::text AS particular, t_carryforward.cfdate AS = transdate, t_carryforward.amount AS totamount, '0' AS totvat, '0' AS = totservice, 'Dr' AS cr_dr, t_carryforward.cfno AS transrefno
  = ; FROM t_carryforward;
 
 
 
 
 
CREATE OR REPLACE VIEW v_invtransaction AS
 SELECT t_payment_= detail.receiptno, v_invtransaction_main.transinvno, v_invtransaction_main.m= brsysid, v_invtransaction_main.particular, v_invtransaction_main.transdate,= v_invtransaction_main.totamount, v_invtransaction_main.totvat, v_invtransa= ction_main.totservice, v_invtransaction_main.cr_dr, v_invtransaction_main.t= ransrefno
   FROM t_payment_detail
   RIGHT JOIN = v_invtransaction_main ON v_invtransaction_main.transrefno::text =3D = t_payment_detail.refno::text AND v_invtransaction_main.particular =3D = t_payment_detail.refpath::text;
 
 
 
 
 
 
 

>>> Andreas Joseph Krogh <andreak@officenet.no> = 1/28/2008 19:26 >>>
On Monday 28 January 2008 08:18:24 Premsun = Choltanwanich wrote:
> Dear All,
>
> I am currently = using PostgreSQL database version 8.0.13.  My problem
> relates = to a slow result when a query using a defined view joins to another
>= table for a result.
>
> Background:  I have 7 tables of = invoice transactions.  The tables are
> slightly different in = that they record different data (some different
> columns in each = table).  There are about 250,000 records when a union view
> is = created.  A simply query on this union performs satisfactorily.
>= ;
> The invoice table union view is then joined with a table of = receipts (which
> have a total of about 150,000 records).
>
= > It takes around 3.5 seconds for "select * from view_transaction = where
> member_id =3D 999  and receipt_no is null" (which = returns unpaid invoices).
>
> By hard coding I created a = single table from the 7 invoice tables (instead
> of creating a = union) and then used it with receipt table.  This time for
> = the same query improved to 1.8 seconds.
>
> To further improve = things I tried to code the selection rather than to use
> a view, = and so "select * from temp_transaction where member_id =3D 999 and
> = receipt_no is null" provided the result in .5 second. (2 records returned> containing the details of receipt_no, transaction_no, transaction_ty= pe,
> transaction_amount, member_id).
>
> I would prefer = to be able to have completed the above by using unions and
> = views.  Is it possible to do this, or am I better creating a = permanent
> table of invoices and writing the query as I did = above?
>
> Any comments on this and suggestions would be = appreciated.  If there is
> documentation where I can read up = please let me have a link.

It is very hard to help without you = providing the schema for the tables/views
involved. It sounds like you = don't have any indexes if you experience
performance-problems on = queries like "select * from view_transaction where
member_id =3D = 999  and receipt_no is null". But again, without the definition =
of the view and underlying tables, it's very hard to help.

-- =
Andreas Joseph Krogh <andreak@officenet.no>
Senior Software = Developer / Manager
------------------------+---------------------------= ------------------+
OfficeNet AS      &nbs= p;     | The most difficult thing in the world is to = |
Karenslyst All? 11      | know how to do a = thing and to watch         = |
PO. Box 529 Sk?yen      | somebody else = doing it wrong, without       |
0214 = Oslo            = ;   | comment.        &nb= sp;            =             &nb= sp;  |
NORWAY         =          |    &= nbsp;           &nbs= p;            &= nbsp;           &nbs= p;   |
Tlf:    +47 24 15 38 90 |  &nb= sp;            =             &nb= sp;            =      |
Fax:    +47 24 15 38 91 = |            &n= bsp;            = ;            &n= bsp;       |
Mobile: +47 909  56 963 = |            &n= bsp;            = ;            &n= bsp;       |
------------------------+----= -----------------------------------------+

NETsoluti= ons Asia=20 Limited

+66 (2) = 237 7247

3D"NETsolut=

--=__Part183ECD59.3__= Content-Type: IMAGE/jpg; name="IMAGE.jpg" Content-Transfer-Encoding: base64 Content-ID: Content-Description: JPEG image /9j/4AAQSkZJRgABAQEBLAEsAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRyUkdC IFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAA AADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFj cHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAA ABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD TAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJD AAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5 OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEA AAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAA AAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAA AA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBo dHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt IHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt IHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcg Q29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENv bmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAA ABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAA AAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAK AA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA mgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy ATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMC DAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMh Ay0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4E jASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3 BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDII RghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqY Cq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUAN Wg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBh EH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT 5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReu F9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9oc AhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCY IMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZcl xyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2 K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIx SjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+ oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXe RiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN 3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYP VlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1f D19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/ aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfBy S3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyB fOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuH n4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLj k02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6f HZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1 q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm4 0blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZG xsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnU y9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj 4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////2wBDAAIBAQIB AQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsM DAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAz/wAARCAAgAHIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAEC AwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0Kx wRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ 2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QA tREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk 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 --=__Part183ECD59.3__=-- --=__Part183ECD59.2__=-- From Premsun@nsasia.co.th Wed Jan 30 03:50:07 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id B7AA12E0126 for ; Tue, 29 Jan 2008 23:50:07 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 49939-03-5 for ; Tue, 29 Jan 2008 23:50:01 -0400 (AST) Received: from astaro.nsasia.co.th (mail.nsasia.co.th [58.137.64.34]) by postgresql.org (Postfix) with ESMTP id 0FFA22E00E8 for ; Tue, 29 Jan 2008 23:39:25 -0400 (AST) Received: from MailerDaemon by astaro.nsasia.co.th with local-bsmtp (Exim 4.63) (envelope-from ) id 1JK3nG-0002ca-OL for pgsql-sql@postgresql.org; Wed, 30 Jan 2008 10:39:22 +0700 Received: from [192.168.200.39] (port=49851 helo=kloster.nsasia.co.th) by astaro.nsasia.co.th with esmtp (Exim 4.63) (envelope-from ) id 1JK3nF-0002cI-NA for pgsql-sql@postgresql.org; Wed, 30 Jan 2008 10:39:21 +0700 Received: from Thailand-MTA by kloster.nsasia.co.th with Novell_GroupWise; Wed, 30 Jan 2008 10:39:21 +0700 Message-Id: <47A053B3.C5F7.004C.0@nsasia.co.th> X-Mailer: Novell GroupWise Internet Agent 7.0.2 Date: Wed, 30 Jan 2008 10:39:12 +0700 From: "Premsun Choltanwanich" To: "Andreas Joseph Krogh" Cc: ,"Tom Lane" Subject: Re: Slow Query problem References: <479DE418.C5F7.004C.0@nsasia.co.th> <3741.1201540806@sss.pgh.pa.us> <479F4382.C5F7.004C.0@nsasia.co.th> <200801291124.23660.andreak@officenet.no> In-Reply-To: <200801291124.23660.andreak@officenet.no> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="=__Part3117E470.2__=" X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.017 tagged_above=0 required=5 tests=AWL=1.126, BAYES_05=-1.11, HTML_MESSAGE=0.001 X-Spam-Level: X-Archive-Number: 200801/223 X-Sequence-Number: 30076 This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=__Part3117E470.2__= Content-Type: text/plain; charset=Windows-874 Content-Transfer-Encoding: quoted-printable SQL I use for create related table and view: =20 =20 CREATE TABLE t_payment_detail ( "sysid" bigserial NOT NULL, receiptno varchar(10) NOT NULL, refpath varchar(255) NOT NULL, refno varchar(100) NOT NULL, CONSTRAINT t_payment_detail_pkey PRIMARY KEY ("sysid") )=20 WITHOUT OIDS; =20 CREATE TABLE t_receipt_cancel ( receiptsysid int8 NOT NULL, amount float8 NOT NULL, receiptcomment varchar(255) NOT NULL, CONSTRAINT t_receipt_cancel_pkey PRIMARY KEY (receiptsysid) )=20 WITH OIDS; =20 CREATE TABLE t_charge ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, chargelistsysid int8 NOT NULL, refno varchar(20) NOT NULL, chargedate timestamp NOT NULL, quantity float8 NOT NULL, unitprice float8 NOT NULL, amount float8 NOT NULL, vat float8 NOT NULL, service float8 NOT NULL, CONSTRAINT t_charge_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 CREATE TABLE t_posbill ( "sysid" bigserial NOT NULL, billno varchar(20) NOT NULL DEFAULT ''::character varying, billdate timestamp NOT NULL DEFAULT '1601-01-01 00:00:00'::timestamp without time zone, mbrsysid int8 NOT NULL DEFAULT 0, totalamount float8 NOT NULL DEFAULT 0, totalvat float8 NOT NULL DEFAULT 0, totalservice float8 NOT NULL DEFAULT 0, CONSTRAINT t_posbill_pkey PRIMARY KEY ("sysid") )=20 WITHOUT OIDS; =20 =20 =20 CREATE TABLE t_creditnotes ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, chargelistsysid int8 NOT NULL, chitno varchar(20) NOT NULL, chitdate timestamp NOT NULL, refno varchar(20) NOT NULL, chargedate timestamp NOT NULL, quantity float8 NOT NULL, unitprice float8 NOT NULL, amount float8 NOT NULL, vat float8 NOT NULL, service float8 NOT NULL, CONSTRAINT t_creditnotes_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 =20 =20 CREATE TABLE t_invoice ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, chargelistsysid int8 NOT NULL, invno varchar(50) NOT NULL, invdate timestamp NOT NULL, totalvalue float8 NOT NULL, totalvat float8 NOT NULL, totalservice float8 NOT NULL, CONSTRAINT t_invoice_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 CREATE TABLE t_receipt ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, receiptno varchar(10) NOT NULL, receiptdate timestamp NOT NULL, paymethod varchar(30) NOT NULL, amount float8 NOT NULL, flagprint bool NOT NULL DEFAULT false, CONSTRAINT t_receipt_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 CREATE TABLE t_moneytransfer ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, transferno varchar(10) NOT NULL, transferdate timestamp NOT NULL, transferamount float8 NOT NULL, CONSTRAINT t_moneytransfer_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 =20 =20 CREATE TABLE t_carryforward ( "sysid" bigserial NOT NULL, mbrsysid int8 NOT NULL, cfno varchar(10) NOT NULL, cfdate timestamp NOT NULL, amount float8 NOT NULL, CONSTRAINT t_carryforward_pkey PRIMARY KEY ("sysid") )=20 WITH OIDS; =20 CREATE OR REPLACE VIEW v_invtransaction_main AS=20 ((((( SELECT 'C'::text || t_charge.refno::text AS transinvno, t_charge.mbrsysid, 'CHIT'::text AS particular, t_charge.chargedate AS transdate, sum(t_charge.amount) AS totamount, sum(t_charge.vat) AS totvat, sum(t_charge.service) AS totservice, 'Dr' AS cr_dr, t_charge.refno AS transrefno FROM t_charge GROUP BY 'C'::text || t_charge.refno::text, t_charge.mbrsysid,=20 'CHIT'::text , t_charge.chargedate, t_charge.refno UNION ALL=20 SELECT 'B'::text || t_posbill.billno::text AS transinvno, t_posbill.mbrsysid, 'POS'::text AS particular, t_posbill.billdate AS transdate, t_posbill.totalamount AS totamount, t_posbill.totalvat AS totvat, t_posbill.totalservice AS totservice, 'Dr' AS cr_dr, t_posbill.billno AS transrefno FROM t_posbill) UNION ALL=20 SELECT 'CN'::text || t_creditnotes.refno::text AS transinvno, t_creditnotes.mbrsysid, 'Credit Note'::text AS particular, t_creditnotes.chargedate AS transdate, - sum(t_creditnotes.amount) AS totamount, - s um(t_creditnotes.vat) AS totvat, - sum(t_creditnotes.service) AS totservice, 'Cr' AS cr_dr, t_creditnotes.refno AS transrefno FROM t_creditnotes GROUP BY 'CN'::text || t_creditnotes.refno::text, t_creditnotes.mbrsysid, 'Credit Note'::text, t_creditnotes.chargedate, t_creditnotes.refno) UNION ALL=20 SELECT 'I'::text || t_invoice.invno::text AS transinvno, t_invoice.mbrsysid, 'Monthly Invoice '::text AS particular, t_invoice.invdate AS transdate, sum(t_invoice.totalvalue) AS totamount, sum(t_invoice.totalvat) AS totvat, sum(t_invoice.totalservice) AS totservice, 'Dr' AS cr_dr, t_invoice.invno AS transrefno FROM t_invoice GROUP BY 'I'::text || t_invoice.invno::text, t_invoice.mbrsysid, 'Monthly Invoice'::text, t_invoice.invdate,t_invoice.invno) UNION ALL=20 SELECT 'P'::text || t_receipt.receiptno::text AS transinvno, t_receipt.mbrsysid, t_receipt.paymethod::text AS particular, t_receipt.receiptdate AS transdate, t_receipt.amount * (- 1::double precision) AS totamount, '0' AS totvat, '0' AS totservice, 'Cr' AS cr_dr, t_receipt.receiptno AS transrefno FROM t_receipt WHERE NOT (t_receipt."sysid" IN ( SELECT t_receipt_cancel.receiptsysid FROM t_receipt_cancel))) UNION ALL=20 SELECT 'T'::text || t_moneytransfer.transferno::text AS transinvno, t_moneytransfer.mbrsysid, 'Transfer'::text AS particular, t_moneytransfer.transferdate AS transdate, t_moneytransfer.transferamount * (- 1::double precision) AS totamount, '0' AS totvat, '0' AS totservice, 'Dr' AS cr_dr, t_moneytransfer.transferno AS transrefno FROM t_moneytransfer) UNION ALL=20 SELECT 'CF'::text || t_carryforward.cfno::text AS transinvno, t_carryforward.mbrsysid, 'Carry Forward'::text AS particular, t_carryforward.cfdate AS transdate, t_carryforward.amount AS totamount, '0' AS totvat, '0' AS totservice, 'Dr' AS cr_dr, t_carryforward.cfno AS transrefno FROM t_carryforward; =20 =20 =20 =20 =20 CREATE OR REPLACE VIEW v_invtransaction AS=20 SELECT t_payment_detail.receiptno, v_invtransaction_main.transinvno, v_invtransaction_main.mbrsysid, v_invtransaction_main.particular, v_invtransaction_main.transdate, v_invtransaction_main.totamount, v_invtransaction_main.totvat, v_invtransaction_main.totservice, v_invtransaction_main.cr_dr, v_invtransaction_main.transrefno FROM t_payment_detail RIGHT JOIN v_invtransaction_main ON v_invtransaction_main.transrefno::text =3D t_payment_detail.refno::text AND v_invtransaction_main.particular =3D t_payment_detail.refpath::text; =20 =20 =20 =20 =20 =20 =20 >>> Andreas Joseph Krogh 1/29/2008 17:24 >>> On Tuesday 29 January 2008 09:18:00 Premsun Choltanwanich wrote: > I already install the latest version of PostgreSQL on my machine then try > again. I found that it has a little improvement about 0.5 second but I > think it still slow. > > What is the 'more detail' you need? Your tables, views and index definitions. > Any other advise? You haven't provided any information on how your tables/views look like and=20 what indexes you have defined. A rule of thumb is to define an index for each=20 column you join on. --=20 Andreas Joseph Krogh Senior Software Developer / Manager ------------------------+---------------------------------------------+ OfficeNet AS | The most difficult thing in the world is to | Karenslyst All* 11 | know how to do a thing and to watch =20 | PO. Box 529 Sk*yen | somebody else doing it wrong, without =20 | 0214 Oslo | comment. =20 | NORWAY | =20 | Tlf: +47 24 15 38 90 | =20 | Fax: +47 24 15 38 91 | =20 | Mobile: +47 909 56 963 | =20 | ------------------------+---------------------------------------------+ ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space m ap settings NETsolutions Asia Limited +66 (2) 237 7247 http://www.nsasia.co.th --=__Part3117E470.2__= Content-Type: multipart/related; boundary="=__Part3117E470.3__=" --=__Part3117E470.3__= Content-Type: text/html; charset=Windows-874 Content-Transfer-Encoding: quoted-printable Content-Description: HTML
SQL I use for create related table and view:
 
 
CREATE TABLE t_payment_detail
(
  "sysid" bigserial NOT = NULL,
  receiptno varchar(10) NOT NULL,
  refpath = varchar(255) NOT NULL,
  refno varchar(100) NOT NULL,
  = CONSTRAINT t_payment_detail_pkey PRIMARY KEY ("sysid")
)
WITHOUT = OIDS;
 
CREATE TABLE t_receipt_cancel
(
  receiptsysid int8 NOT = NULL,
  amount float8 NOT NULL,
  receiptcomment varchar(25= 5) NOT NULL,
  CONSTRAINT t_receipt_cancel_pkey PRIMARY KEY = (receiptsysid)
)
WITH OIDS;
 
CREATE TABLE t_charge
(
  "sysid" bigserial NOT NULL,
&n= bsp; mbrsysid int8 NOT NULL,
  chargelistsysid int8 NOT NULL,
&n= bsp; refno varchar(20) NOT NULL,
  chargedate timestamp NOT = NULL,
  quantity float8 NOT NULL,
  unitprice float8 NOT = NULL,
  amount float8 NOT NULL,
  vat float8 NOT NULL,
&= nbsp; service float8 NOT NULL,
  CONSTRAINT t_charge_pkey PRIMARY = KEY ("sysid")
)
WITH OIDS;
 

CREATE TABLE t_posbill
(
  "sysid" bigserial NOT = NULL,
  billno varchar(20) NOT NULL DEFAULT ''::character = varying,
  billdate timestamp NOT NULL DEFAULT '1601-01-01 = 00:00:00'::timestamp without time zone,
  mbrsysid int8 NOT NULL = DEFAULT 0,
  totalamount float8 NOT NULL DEFAULT 0,
  = totalvat float8 NOT NULL DEFAULT 0,
  totalservice float8 NOT NULL = DEFAULT 0,
  CONSTRAINT t_posbill_pkey PRIMARY KEY ("sysid")
) =
WITHOUT OIDS;
 
 
 
CREATE TABLE t_creditnotes
(
  "sysid" bigserial NOT = NULL,
  mbrsysid int8 NOT NULL,
  chargelistsysid int8 NOT = NULL,
  chitno varchar(20) NOT NULL,
  chitdate timestamp = NOT NULL,
  refno varchar(20) NOT NULL,
  chargedate = timestamp NOT NULL,
  quantity float8 NOT NULL,
  = unitprice float8 NOT NULL,
  amount float8 NOT NULL,
  vat = float8 NOT NULL,
  service float8 NOT NULL,
  CONSTRAINT = t_creditnotes_pkey PRIMARY KEY ("sysid")
)
WITH OIDS;
 
 
 
CREATE TABLE t_invoice
(
  "sysid" bigserial NOT NULL,
&= nbsp; mbrsysid int8 NOT NULL,
  chargelistsysid int8 NOT NULL,
&= nbsp; invno varchar(50) NOT NULL,
  invdate timestamp NOT = NULL,
  totalvalue float8 NOT NULL,
  totalvat float8 NOT = NULL,
  totalservice float8 NOT NULL,
  CONSTRAINT = t_invoice_pkey PRIMARY KEY ("sysid")
)
WITH OIDS;
 
CREATE TABLE t_receipt
(
  "sysid" bigserial NOT NULL,
&= nbsp; mbrsysid int8 NOT NULL,
  receiptno varchar(10) NOT = NULL,
  receiptdate timestamp NOT NULL,
  paymethod = varchar(30) NOT NULL,
  amount float8 NOT NULL,
  = flagprint bool NOT NULL DEFAULT false,
  CONSTRAINT t_receipt_pkey = PRIMARY KEY ("sysid")
)
WITH OIDS;
 
CREATE TABLE t_moneytransfer
(
  "sysid" bigserial NOT = NULL,
  mbrsysid int8 NOT NULL,
  transferno varchar(10) = NOT NULL,
  transferdate timestamp NOT NULL,
  transferamou= nt float8 NOT NULL,
  CONSTRAINT t_moneytransfer_pkey PRIMARY KEY = ("sysid")
)
WITH OIDS;
 
 
 
CREATE TABLE t_carryforward
(
  "sysid" bigserial NOT = NULL,
  mbrsysid int8 NOT NULL,
  cfno varchar(10) NOT = NULL,
  cfdate timestamp NOT NULL,
  amount float8 NOT = NULL,
  CONSTRAINT t_carryforward_pkey PRIMARY KEY ("sysid")
) =
WITH OIDS;
 

CREATE OR REPLACE VIEW v_invtransaction_main AS
((((( SELECT = 'C'::text || t_charge.refno::text AS transinvno, t_charge.mbrsysid, = 'CHIT'::text AS particular, t_charge.chargedate AS transdate, sum(t_charge.= amount) AS totamount, sum(t_charge.vat) AS totvat, sum(t_charge.service) = AS totservice, 'Dr' AS cr_dr, t_charge.refno AS transrefno
   = FROM t_charge
  GROUP BY 'C'::text || t_charge.refno::text, = t_charge.mbrsysid,  'CHIT'::text , t_charge.chargedate, t_charge.refno=
UNION ALL
 SELECT 'B'::text || t_posbill.billno::text AS = transinvno, t_posbill.mbrsysid, 'POS'::text AS particular, t_posbill.billda= te AS transdate, t_posbill.totalamount AS totamount, t_posbill.totalvat AS = totvat, t_posbill.totalservice AS totservice, 'Dr' AS cr_dr, t_posbill.bill= no AS transrefno
   FROM t_posbill)
UNION ALL
 SEL= ECT 'CN'::text || t_creditnotes.refno::text AS transinvno, t_creditnotes.mb= rsysid, 'Credit Note'::text AS particular, t_creditnotes.chargedate AS = transdate, - sum(t_creditnotes.amount) AS totamount, - sum(t_creditnotes.va= t) AS totvat, - sum(t_creditnotes.service) AS totservice, 'Cr' AS cr_dr, = t_creditnotes.refno AS transrefno
   FROM t_creditnotes
&nb= sp; GROUP BY 'CN'::text || t_creditnotes.refno::text, t_creditnotes.mbrsysi= d, 'Credit Note'::text, t_creditnotes.chargedate, t_creditnotes.refno)
U= NION ALL
 SELECT 'I'::text || t_invoice.invno::text AS transinvno,= t_invoice.mbrsysid, 'Monthly Invoice '::text AS particular, t_invoice.invd= ate AS transdate, sum(t_invoice.totalvalue) AS totamount, sum(t_invoice.tot= alvat) AS totvat, sum(t_invoice.totalservice) AS totservice, 'Dr' AS = cr_dr, t_invoice.invno AS transrefno
   FROM t_invoice
&nbs= p; GROUP BY 'I'::text || t_invoice.invno::text, t_invoice.mbrsysid, = 'Monthly Invoice'::text, t_invoice.invdate,t_invoice.invno)
UNION ALL =
 SELECT 'P'::text || t_receipt.receiptno::text AS transinvno, = t_receipt.mbrsysid, t_receipt.paymethod::text AS particular, t_receipt.rece= iptdate AS transdate, t_receipt.amount * (- 1::double precision) AS = totamount, '0' AS totvat, '0' AS totservice, 'Cr' AS cr_dr, t_receipt.recei= ptno AS transrefno
   FROM t_receipt
  WHERE NOT = (t_receipt."sysid" IN ( SELECT t_receipt_cancel.receiptsysid FROM = t_receipt_cancel)))
UNION ALL
 SELECT 'T'::text || t_moneytrans= fer.transferno::text AS transinvno, t_moneytransfer.mbrsysid, 'Transfer'::t= ext AS particular, t_moneytransfer.transferdate AS transdate, t_moneytransf= er.transferamount * (- 1::double precision) AS totamount, '0' AS totvat, = '0' AS totservice, 'Dr' AS cr_dr, t_moneytransfer.transferno AS transrefno<= BR>   FROM t_moneytransfer)
UNION ALL
 SELECT = 'CF'::text || t_carryforward.cfno::text AS transinvno, t_carryforward.mbrsy= sid, 'Carry Forward'::text AS particular, t_carryforward.cfdate AS = transdate, t_carryforward.amount AS totamount, '0' AS totvat, '0' AS = totservice, 'Dr' AS cr_dr, t_carryforward.cfno AS transrefno
  = ; FROM t_carryforward;
 
 
 
 
 
CREATE OR REPLACE VIEW v_invtransaction AS
 SELECT t_payment_= detail.receiptno, v_invtransaction_main.transinvno, v_invtransaction_main.m= brsysid, v_invtransaction_main.particular, v_invtransaction_main.transdate,= v_invtransaction_main.totamount, v_invtransaction_main.totvat, v_invtransa= ction_main.totservice, v_invtransaction_main.cr_dr, v_invtransaction_main.t= ransrefno
   FROM t_payment_detail
   RIGHT JOIN = v_invtransaction_main ON v_invtransaction_main.transrefno::text =3D = t_payment_detail.refno::text AND v_invtransaction_main.particular =3D = t_payment_detail.refpath::text;
 
 
 
 
 
 
 



>>> Andreas Joseph Krogh <andreak@officenet.no= > 1/29/2008 17:24 >>>
On Tuesday 29 January 2008 09:18:00 = Premsun Choltanwanich wrote:
> I already install the latest version = of PostgreSQL on my machine then try
> again. I found that it has a = little improvement about 0.5 second but I
> think it still slow.
&= gt;
> What is the 'more detail' you need?

Your tables, views = and index definitions.

> Any other advise?

You haven't = provided any information on how your tables/views look like and
what = indexes you have defined. A rule of thumb is to define an index for each =
column you join on.

--
Andreas Joseph Krogh <andreak@offi= cenet.no>
Senior Software Developer / Manager
--------------------= ----+---------------------------------------------+
OfficeNet AS &n= bsp;          | The most = difficult thing in the world is to |
Karenslyst All? 11   = ;   | know how to do a thing and to watch    =      |
PO. Box 529 Sk?yen    &nb= sp; | somebody else doing it wrong, without     &n= bsp; |
0214 Oslo         &n= bsp;     | comment.      =             &nb= sp;            =      |
NORWAY      &nb= sp;           | &nbs= p;            &= nbsp;           &nbs= p;            &= nbsp;     |
Tlf:    +47 24 15 38 90 = |            &n= bsp;            = ;            &n= bsp;       |
Fax:    +47 = 24 15 38 91 |          &n= bsp;            = ;            &n= bsp;         |
Mobile: +47 = 909  56 963 |         &nb= sp;            =             &nb= sp;          |
------------= ------------+---------------------------------------------+

--------= -------------------(end of broadcast)---------------------------
TIP 5: = don't forget to increase your free space map settings

NETsoluti= ons Asia=20 Limited

+66 (2) = 237 7247

3D"NETsolut=

--=__Part3117E470.3__= Content-Type: IMAGE/jpg; name="IMAGE.jpg" Content-Transfer-Encoding: base64 Content-ID: Content-Description: JPEG image /9j/4AAQSkZJRgABAQEBLAEsAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRyUkdC IFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAA AADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFj cHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAA ABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD TAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJD AAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5 OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEA AAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAA AAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAA AA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBo dHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt IHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt IHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcg Q29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENv bmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAA ABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAA AAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAK AA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA mgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy ATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMC DAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMh Ay0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4E jASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3 BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDII RghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqY Cq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUAN Wg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBh EH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT 5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReu F9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9oc AhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCY IMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZcl xyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2 K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIx SjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+ oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXe RiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN 3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYP VlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1f D19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/ aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfBy S3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyB fOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuH n4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLj k02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6f HZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1 q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm4 0blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZG xsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnU y9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj 4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////2wBDAAIBAQIB AQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsM DAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAz/wAARCAAgAHIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAEC AwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0Kx wRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ 2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QA tREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk 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 --=__Part3117E470.3__=-- --=__Part3117E470.2__=--