Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Очень большой запрос в MS SQL 7.0 
:(
    Опции темы
Fedorenkoda
Дата 16.8.2002, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 5.8.2002

Репутация: нет
Всего: нет



Уважаемые мастера! Мне необходимо получить итоговый отчет деятельности фирмы, но у меня возникла следующая ситуация.Мой запрос состоит из 2033 строк. И при его выполнении возникает такая ошибка:
Changed language setting to us_english.
ODBC: Msg 0, Level 19, State 1
SqlDumpExceptionHandler: Process 12 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.

Connection Broken

Я не могу понять, что это за ошибка.
И если можно помогите пожалуйста оптимизировать запрос,т.к. он содержит много повторяющихся элементов. Вот его кусок:
Select 'Абонентная плата','КВС',
((select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p
where c.Branch=1 and c.Client=p.Client
     and p.ServiceType=2
     and (p.Period between '07.01.2002' and '08.01.2002'))-
(select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p  , DEVICENUMBER d
where d.Fine>10 and p.Number=d.Number and (c.Branch=1)
     and c.Client=p.Client and p.ServiceType=2
     and (p.Period between '07.01.2002' and '08.01.2002'))),
(select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p  , DEVICENUMBER d
where d.Fine>10 and p.Number=d.Number and (c.Branch=1)
     and c.Client=p.Client and p.ServiceType=2
     and (p.Period between '07.01.2002' and '08.01.2002')),0.00
union all
Select 'Абонентная плата','НХС с ндс',
((select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p
where c.Client=p.Client
     and (c.Branch<>1 and c.Branch<>30)
     and p.ServiceType=2
     and (p.Period between '07.01.2002' and '08.01.2002'))-
(select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p , DEVICENUMBER d
where c.Client=p.Client and p.Number=d.Number  
     and (c.Branch<>1 and c.Branch<>30)
     and p.ServiceType=2 and d.Fine>10
     and (p.Period between '07.01.2002' and '08.01.2002'))),
(select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p , DEVICENUMBER d
where c.Client=p.Client and p.Number=d.Number  
     and (c.Branch<>1 and c.Branch<>30)
     and p.ServiceType=2 and d.Fine>10
     and (p.Period between '07.01.2002' and '08.01.2002')),
((select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p
where c.Client=p.Client
     and (c.Branch<>1 and c.Branch<>30)
     and p.ServiceType=2
     and (p.Period between '07.01.2002' and '08.01.2002'))-
(select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p , DEVICENUMBER d
where c.Client=p.Client and p.Number=d.Number  
     and (c.Branch<>1 and c.Branch<>30)
     and p.ServiceType=2 and d.Fine>10
     and (p.Period between '07.01.2002' and '08.01.2002'))+
(select  isnull(sum(r.Summa),0.00)
from  Pers_Account p ,Recalc r,Client c
where r.Pers_Account=p.Pers_Account and c.Client=p.Client
     and p.ServiceType=2        
      and OperationType in (1,3,5)
     and (c.Branch<>1 and c.Branch<>30)
     and (r.RDate between '07.02.2002' and '08.01.2002')))/5
union all
Select 'Абонентная плата','НХС без ндс',
((select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p
where c.Branch=30
     and c.Client=p.Client and p.ServiceType=2
     and (p.Period between '07.01.2002' and '08.01.2002'))-
(select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p  , DEVICENUMBER d
where d.Fine>10 and p.Number=d.Number and (c.Branch=30)
     and c.Client=p.Client and p.ServiceType=2
     and (p.Period between '07.01.2002' and '08.01.2002'))),
(select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p  , DEVICENUMBER d
where d.Fine>10 and p.Number=d.Number and (c.Branch=30)
     and c.Client=p.Client and p.ServiceType=2
     and (p.Period between '07.01.2002' and '08.01.2002')),0.00
union all
...

Помогите пожалуйста
PM MAIL   Вверх
Vit
Дата 16.8.2002, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



1) Повторяющиеся константы определи 1 раз, как переменные, а затем их используй
2) Проследи чтобы были индексы по всем полям, упомянутым в "Where" секции
3) Попробуй упростить кверю (например разбить её по местам где у тебя union на несколько), посмотри проходит ли она в упрощённом виде, затем постепенно усложняй
4) Проверь языковые установки, почему-то ошибка вываливается о языке...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Keks
Дата 23.9.2002, 05:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.9.2002

Репутация: нет
Всего: нет



Такое же сообщение вываливается у меня при выполнении запроса с full join трех таблиц если в них много строк. При малом числе строк все нормально! Я считаю это просто позорным багом.
PM MAIL   Вверх
Vit
Дата 23.9.2002, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Цитата(Keks @ 22.9.2002, 13:19)
Такое же сообщение вываливается у меня при выполнении запроса с full join трех таблиц если в них много строк. При малом числе строк все нормально! Я считаю это просто позорным багом.

Я делал Full Join на десяток таблиц с довольно большим количеством строк. Проверь свободное место на диске и установлены ли последние SP для сервера.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 16.10.2002, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Кроме советов выше - у меня есть опыт, что делать все единым запросом не всегда быстро. Бывает удобно использовать временные таблицы.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.