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


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 18. Сентября 2008
Фильтр 1SUPDTS
16. Мая 2014 :: 07:38
Печать  
Понадобилось организовать фильтр для 1SUPDTS.
База DBF. Необходимо удалить записи по виду документа ДоговорДвижения по следующему принципу:
- в документе ДоговорДвижения есть реквизит типа Документ.Договор;
- в документе Договор есть реквизит РозничнаяТочка типа Справочник.РозничныеТочки
- в справочнике Розничные точки есть реквизит ЗонаМиграции типа Справочник.ЗоныМиграции
- в справочнике РозничныеТочки есть реквизит ИдентификаторРИБ типа строка, 3
Запись из 1supdts должна удаляться, если зона миграции розничной точки, у которой ИдентификаторРИБ = DBSIGN записи, не равна зоне миграции розничной точки, указанной в договоре, который в свою очередь указан в документе  ДоговорДвижения, найденном по OBJID

Код
Выбрать все
DELETE updts
FROM
	1supdts as updts
INNER JOIN
	$Документ.ДоговорДвижения as Движения
	ON (Движения.iddoc = updts.objid)
INNER JOIN
	$Документ.Договор as Договоры
	ON (Договоры.iddoc = $Движения.Договор)
INNER JOIN
	$Справочник.РозничныеТочки as РозничныеТочки
	ON (РозничныеТочки.id = $Договоры.РозничнаяТочка)
INNER JOIN
	$Справочник.РозничныеТочки as РозничныеТочкиРИБ
	ON (UPPER($РозничныеТочкиРИБ.ИдентификаторРИБ) = updts.dbsign)
WHERE
	(updts.DBSIGN + updts.TypeID + updts.ObjID LIKE '___' + $ВидДокумента.ДоговорДвижения + '_________'
	AND $РозничныеТочки.ЗонаМиграции <> $РозничныеТочкиРИБ.ЗонаМиграции)";
 



Вот этот запрос выполняется больше 20 минут при количестве записей:
1supdts - 200 000
Договор - 580 000
ДоговорДвижения - 920 000
Розничные точки - 135
Можно ли ускорить и как?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Фильтр 1SUPDTS
Ответ #1 - 21. Мая 2014 :: 11:41
Печать  
для начала, выкинуть соединение с 1sjourn
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Фильтр 1SUPDTS
Ответ #2 - 21. Мая 2014 :: 11:43
Печать  
Потом переписать все соединения с использованием индексов, в том числе, убрать из последенего where условие на точку в условие присоединения таблички справочника.
  
Наверх
 
IP записан
 
Анатолий
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 18. Сентября 2008
Re: Фильтр 1SUPDTS
Ответ #3 - 28. Мая 2014 :: 10:37
Печать  
Eprst писал(а) 21. Мая 2014 :: 11:41:
для начала, выкинуть соединение с 1sjourn

хм, его и так нет
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать