Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Помогите с 1sqlite (число прочтений - 1152 )
1st
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 07. Апреля 2011
Помогите с 1sqlite
29. Июня 2011 :: 12:58
Печать  
Тема такая.
Решил переписать отчетег попрямевшими руками. Переписал с 8 запросов все на один, сижу, радуюсь.
И тут: БАЦ! А запрос формируется 5 минут. Хотя кривой отчет из 8 запросов и потом прекривейшего соединения вручную всех таблиц формировался ну от силы минуту, а то и пол.
Стал разбираться в чем дело, рыл долго долго земелю, нашел, что тормозить начинает при подключении документа реализации. Время подскакивает с 200 миллисекунд до 86 000.

Текст запроса:
SELECT
     |Ном.id [Номенклатура: Справочник.Номенклатура],
     |Заказы.ДокументЗаказа [Заявка: Документ.ЗаявкаПокупателя],
     |Поступления.Поступление [Поступление: Документ.ПоступлениеТМЦ],
     |ПостТМЦСтр.Количество [Поступило],      
     |ПостТМЦСтр.Сумма,
     |ПостТМЦСтр.СуммаНДС,
     |ПостТМЦСтр.Сертификация,
     |Ном.Резерв,
     |Заказы.Количество [Заказано]
     |from Справочник_ПоступленияПоЗаказам as Поступления
     |inner join Документ_ПоступлениеТМЦ as ПостТМЦ
     |on Поступления.Поступление = ПостТМЦ.iddoc
     |inner join Справочник_ВиртуальныеЗаказы as Заказы
     |on Поступления.parentext = Заказы.id
     |inner join Справочник_Номенклатура as Ном
     |on Ном.id = Заказы.Parentext
     |inner join Журнал as Жур
     |on Жур.iddoc = ПостТМЦ.iddoc
     |inner join ДокументСтроки_ПоступлениеТМЦ as ПостТМЦСтр
     |on (ПостТМЦ.iddoc = ПостТМЦСтр.iddoc)and(ПостТМЦСтр.Номенклатура = Заказы.Parentext)
//      |left join Документ_Реализация as Реал
//      |on Реал.Заявка = Заказы.ДокументЗаказа
//      |on substr(Реал.ДокОснование,5,9) = Заказы.ДокументЗаказа
     |where Жур.date between :НачДата and :КонДата
     |and Жур.closed = 1
     |and Заказы.ismark <> '*'";

Если раскомментировать закомментированный кусок запроса*** - время подлетает на 85 с лишним секунд. И это за месяц. А мне надо за год. Вот такой писец. Сейчас после запроса я перебираю таблицу, выбираю вручную подчиненные документы, выбираю строки в них, обрабатываю. и вся эта фигня выполняется 1 секунду. Так почему же в запросе выполняется 85???? По реквизиту "ДокументЗаказа" - в справочнике ВиртуальныеЗаказы стоит отбор и сортировка.
*** - Соединение пробовал двумя способами, разумеется, не одновременно, "Заявка" имеет вид "Документ.ЗаявкаПокупателя", "ДокОснование" - "Документ". Обеими способами соединение работает, вопрос только во времени.

Может кто что подскажет умное?)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите с 1sqlite
Ответ #1 - 29. Июня 2011 :: 13:04
Печать  
забавный запрос..

А что,
1.  в справочнике хранишь ссылку на документ прихода ?
2. в документе прихода реквизиты Сумма, Количество - реквизиты шапки ??
  
Наверх
 
IP записан
 
1st
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 07. Апреля 2011
Re: Помогите с 1sqlite
Ответ #2 - 29. Июня 2011 :: 13:07
Печать  
Eprst писал(а) 29. Июня 2011 :: 13:04:
забавный запрос..

А что,
1.  в справочнике хранишь ссылку на документ прихода ?
2. в документе прихода реквизиты Сумма, Количество - реквизиты шапки ??


1. Да
2. Нет, строки тоже подключаю, Есть ПостТМЦ и ПостТМЦСтр. Суммы и Количества из строк естессна.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать