Re: Slow Query problem - Mailing list pgsql-sql
From | Andreas Joseph Krogh |
---|---|
Subject | Re: Slow Query problem |
Date | |
Msg-id | 200801281326.33832.andreak@officenet.no Whole thread Raw |
In response to | Slow Query problem ("Premsun Choltanwanich" <Premsun@nsasia.co.th>) |
Responses |
Re: Slow Query problem
Re: Slow Query problem |
List | pgsql-sql |
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 = 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 = 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 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 = 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 | 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. | NORWAY | | Tlf: +47 24 15 38 90 | | Fax: +47 24 15 38 91 | | Mobile: +47 909 56 963 | | ------------------------+---------------------------------------------+