powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Оптимизация SELECT'a
9 сообщений из 9, страница 1 из 1
Оптимизация SELECT'a
    #39364747
archelite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
-- Table: public.tmp_metrics_for_upload

-- DROP TABLE public.tmp_metrics_for_upload;

CREATE TABLE public.tmp_metrics_for_upload
(
  nzp_cr integer,
  nzp_kvar integer,
  num_ls integer,
  nzp_serv integer,
  nzp_cnttype integer,
  num_cnt character varying(40),
  dat_prov date,
  dat_provnext date,
  dat_uchet date,
  val_cnt double precision,
  norma double precision,
  is_actual integer,
  nzp_user integer,
  dat_when date,
  dat_close date,
  cur_unl integer,
  nzp_wp integer,
  ist integer,
  dat_oblom date,
  dat_poch date,
  dat_del date,
  user_del integer,
  nzp_counter integer,
  month_calc date,
  dat_d date,
  dat_po date,
  dat_block timestamp without time zone,
  user_block integer,
  pkod numeric(13,0),
  service character(100),
  val_cnt_max double precision
)
WITH (
  OIDS=TRUE
);
ALTER TABLE public.tmp_metrics_for_upload
  OWNER TO admin;

-- Index: public.nzp_counter_tmp_metrics_for_upload

-- DROP INDEX public.nzp_counter_tmp_metrics_for_upload;

CREATE INDEX nzp_counter_tmp_metrics_for_upload
  ON public.tmp_metrics_for_upload
  USING btree
  (nzp_counter);

-- Index: public.nzp_cr_tmp_metrics_for_upload

-- DROP INDEX public.nzp_cr_tmp_metrics_for_upload;

CREATE INDEX nzp_cr_tmp_metrics_for_upload
  ON public.tmp_metrics_for_upload
  USING btree
  (nzp_cr);



в ней несколько млн. значений, нужно просто выбрать их все для дальнейшей загрузки в DataTable (а потом в файл).
простой SELECT * работает около 15 минут, SELECT с перечислением всех полей еще дольше. Как можно ускорить?
Добавление индексов поможет? если да то на какие поля? И вообще как правильно использовать индексы, сколько их нужно и на какие поля они обычно добавляются?
...
Рейтинг: 0 / 0
Оптимизация SELECT'a
    #39364753
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
archelite,

какой размер таблицы в байтах? что значит загрузить в datatable? скорей всего у вас приложение плохо переваривает большое число данных. если нужен экспорт в файл, то делайте его сразу запросом командой copy. индексы для выборки всей таблицы никак не помогут.
...
Рейтинг: 0 / 0
Оптимизация SELECT'a
    #39364763
archelite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
размер 270532608 Б или 258 Мб

нужно сделать выгрузку в файл в какой-нибудь формат удобный для таблиц .XLS, .DBF желательно.

если это можно сделать напрямую из Postgres и работать будет быстрее я только за
...
Рейтинг: 0 / 0
Оптимизация SELECT'a
    #39364783
archelite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
COPY не подойдет, т.к. нет доступа к файловой системе сервера, только запросом получать таблицу, а потом выгружать её в файл
...
Рейтинг: 0 / 0
Оптимизация SELECT'a
    #39364797
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
archeliteCOPY не подойдет, т.к. нет доступа к файловой системе сервера, только запросом получать таблицу, а потом выгружать её в файл

Так сделайте psql \copy как вариант.
А как вы 15 минут то засекали? каким методом?

PS: при выборе всей таблицы никакие индексы никогда не помогают.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Оптимизация SELECT'a
    #39364833
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
archelite,

запросом copy можно сохранить например в формат csv. доступ к фс сервера с базой не обязателен, можно использовать psql команду \copy , которая фактически сделает запрос сopy ... to stdout и сохранит результат в локальный файл.
...
Рейтинг: 0 / 0
Оптимизация SELECT'a
    #39364882
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
archelite,

интересно, зачем вы используете

service character(100),
...
Рейтинг: 0 / 0
Оптимизация SELECT'a
    #39364894
archelite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexiusarchelite,

запросом copy можно сохранить например в формат csv. доступ к фс сервера с базой не обязателен, можно использовать psql команду \copy , которая фактически сделает запрос сopy ... to stdout и сохранит результат в локальный файл.

Код: sql
1.
\copy public.tmp_metrics_for_upload To 'D:\test.csv' With CSV HEADER 



попробовал составить ругается на слэш

нужен формат ксв, чтобы имена колонок были = именам колонок в таблице и чтобы сохранялось локально
...
Рейтинг: 0 / 0
Оптимизация SELECT'a
    #39365082
archelite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
бгг, так это в консоль надо было писать, всё разобрался
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Оптимизация SELECT'a
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]