powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Повышение производительности запроса Pervasive 9.1
2 сообщений из 2, страница 1 из 1
Повышение производительности запроса Pervasive 9.1
    #34716282
Nike85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Существует ли какой-нибудь оптимизатор запросов для первазива? написал "запросик", который при вытаскивании из базы порядка 1700 записей работает от 30 до 40 минут (точнее столько работает прога, которая использует этот запрос, а сам кверик отрабатывает 25-35 минут). Такая производительность мне жутко не нравится.
Привожу текст запроса:
Код: plaintext
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.
select katos.datok, katpodr.name as podrName, katos.datv, katos.nameos, vidnorma.kod, katos.innum,convert(katos.nrec, SQL_CHAR) as katnrec,
substring(katos.innum, 1 , 3 ) as Schet,
a1.stoim as a1stoim, a1.sumizn as a1sumizn, a2.stoim as a2stoim, a2.sumizn as a2sumizn,
K.innum as highinnum, aa1.izn0, aa2.izn1,aa3.izn2
 from katos
left join spkatos on katos.nrec=spkatos.ckatos
left join vidnorma on spkatos.cnorma=vidnorma.nrec
left join katpodr on katos.cpodr=katpodr.nrec
left join arciznos a1 on a1.ckatos=katos.nrec
left join arciznos a2 on a2.ckatos=katos.nrec
left join katos K on K.nrec=katos.chigheros
left join (select s1.ckatos,sum(newsumizn) as izn0 from spmoveos s1
   left join moveos M on s1.cmoveos=M.nrec
   left join klassos K1 on M.cosnov=K1.nrec
   where (M.sysoper= 5 ) and (s1.datob between '2007-01-01' and '2007-05-01' )
   group by s1.ckatos
            ) aa1 on katos.nrec=aa1.ckatos
left join (select s1.ckatos,sum(newsumizn) as izn1 from spmoveos s1
   left join moveos M on s1.cmoveos=M.nrec
   left join klassos K1 on M.cosnov=K1.nrec
   where (M.sysoper= 5 ) and (s1.datob between '2007-01-01' and '2007-05-01'  )
   group by s1.ckatos
            ) aa2 on katos.nrec=aa2.ckatos
left join (select s1.ckatos,sum(newsumizn) as izn2 from spmoveos s1
   left join moveos M on s1.cmoveos=M.nrec
   left join klassos K1 on M.cosnov=K1.nrec
   where (M.sysoper= 5 ) and (s1.datob <= '2007-05-01')
   group by s1.ckatos
            ) aa3 on katos.nrec=aa3.ckatos

where (ifnull(katos.datv,'2200-01-01') > '2007-05-01' ) and (katos.datok <= '2007-01-01' )
  and a1.data=(select Max(data) from arciznos a3 where a3.data <= '2007-01-01')
  and a2.data=(select Max(data) from arciznos a4 where a4.data <= '2007-05-01')
О программе: Дельфи 7, компоненты PDAC 2000,
...
Рейтинг: 0 / 0
Повышение производительности запроса Pervasive 9.1
    #34757355
БПА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не зная структуры таблиц и их индексов трудно что-то советовать.

Какой версии PSQL ? У версий ниже 9.5 были проблемы с использование агрегатных функций и
индексов.

Посмотри схему (план) работы данного запроса (утилита Query Plan Viewer), м.б. где индексов не хватает.

Я бы подзапросы сделал встроенными функциями (процедурами).
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Повышение производительности запроса Pervasive 9.1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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