From: | Madison Kelly <linux(at)alteeve(dot)com> |
---|---|
To: | pgsql-performance(at)postgresql(dot)org |
Subject: | sum of all values |
Date: | 2005-01-14 03:31:12 |
Message-ID: | 41E73D00.6030206@alteeve.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
Hi all,
Is there a fast(er) way to get the sum of all integer values for a
certain condition over many thousands of rows? What I am currently doing
is this (which takes ~5-10sec.):
SELECT SUM (a.file_size) FROM file_info_1 a, file_set_1 b WHERE
a.file_name=b.fs_name AND a.file_parent_dir=b.fs_parent_dir AND
a.file_type=b.fs_type AND b.fs_backup='t';
I need to keep parts of the data in two tables. I currently use
'file_name/fs_name', 'file_parent_dir/fs_parent_dir' and
'file_type/fs_type' to match the entries in the two tables. The
'file_info_#' table is frequently dropped and re-created so this was the
only way I could think to match the data.
I am hoping that maybe there is something I can do differently that
will return this value a lot faster (ideally within a second). I know
that this is heavily dependant on the system underneath but the program
is designed for Joe/Jane User so I am trying to do what I can in the
script and within my DB calls to make this as efficient as possible. I
realise that my goal may not be viable.
Here are the schemas, in case they help:
tle-bu=> \d file_info_1 Table "public.file_info_1"
Column | Type | Modifiers
-----------------+---------+----------------------------
file_acc_time | bigint | not null
file_group_name | text | not null
file_group_uid | integer | not null
file_mod_time | bigint | not null
file_name | text | not null
file_parent_dir | text | not null
file_perm | text | not null
file_size | bigint | not null
file_type | text | not null default 'f'::text
file_user_name | text | not null
file_user_uid | integer | not null
Indexes:
"file_info_1_display_idx" btree (file_parent_dir, file_name, file_type)
"file_info_1_search_idx" btree (file_parent_dir, file_name, file_type)
tle-bu=> \d file_set_1 Table "public.file_set_1"
Column | Type | Modifiers
---------------+---------+----------------------------
fs_backup | boolean | not null default true
fs_display | boolean | not null default false
fs_name | text | not null
fs_parent_dir | text | not null
fs_restore | boolean | not null default false
fs_type | text | not null default 'f'::text
Indexes:
"file_set_1_sync_idx" btree (fs_parent_dir, fs_name, fs_type)
Thanks all!
Madison
From | Date | Subject | |
---|---|---|---|
Next Message | Benjamin Wragg | 2005-01-14 05:52:42 | Re: which dual-CPU hardware/OS is fastest for PostgreSQL? |
Previous Message | Joe Conway | 2005-01-13 20:04:46 | Re: PostgreSQL vs. Oracle vs. Microsoft |