У меня есть таблица, которую я создал локально для использования некоторых оконных функций PG в наборе данных, содержащем около 4 миллионов строк (первоначально это был текстовый файл). Каждая строка соответствует заказу клиента.
CREATE TABLE orders
(
orderid integer,
customerid integer,
orderdate date,
status text,
amount money,
tax money,
customername text,
customerstate text
У меня есть база данных, работающая локально на машине i7 с 8 ГБ ОЗУ под управлением Windows 8. У меня есть индексы btree (индексы?) по идентификатору заказа, идентификатору клиента и дате заказа.
Когда я запускаю следующий запрос, это занимает 300 секунд (примерно). Я надеялся, что с некоторой базовой настройкой смогу сократить время до минуты, но я не администратор баз данных. У кого-нибудь есть советы?
select orderid, customername, orderdate,
rank() OVER (PARTITION BY customername ORDER BY orderdate ASC) as cust_ord_nbr
from orders
EXPLAIN ANALYZE
, чтобы получить время, необходимое для запроса без вывода. - person wildplasser   schedule 12.09.2015\d orders
в psql)? - person Erwin Brandstetter   schedule 13.09.2015customername
илиcustomerid
тоже подойдет? Куда отправить результат? Вы не просто запрашиваете 4 миллиона строк, вы должны поместить результат где-то. Это таблица только для чтения? Вы единственный пользователь? Или у вас тоже есть (одновременный) доступ на запись? Рассмотрите инструкции для вопросов [postgresql-performance]: stackoverflow.com/tags/postgresql-performance/info - person Erwin Brandstetter   schedule 13.09.2015