sum of all values

Поиск
Список
Период
Сортировка
От Madison Kelly
Тема sum of all values
Дата
Msg-id 41E73D00.6030206@alteeve.com
обсуждение исходный текст
Ответы Re: sum of all values  (Richard Huxton <dev@archonet.com>)
Список 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

В списке pgsql-performance по дате отправления:

Предыдущее
От: Alex Turner
Дата:
Сообщение: Re: PostgreSQL vs. Oracle vs. Microsoft
Следующее
От: Jan Dittmer
Дата:
Сообщение: Re: which dual-CPU hardware/OS is fastest for PostgreSQL?