| 
    
            
         
         | 
    
  | 
слабое место запроса | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Dom26    
     17.04.19 
            ✎
    10:35 
 | 
         
        долго работает запрос, проблема в том что достаю три вида документа да еще и из двух регистров
 
        Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | бит_ИсторияИзмененияСтатусовОбъектовСрезПоследних.Объект КАК Объект, | бит_ИсторияИзмененияСтатусовОбъектовСрезПоследних.Статус |ПОМЕСТИТЬ Статусы |ИЗ | РегистрСведений.бит_ИсторияИзмененияСтатусовОбъектов.СрезПоследних( | , | Объект ССЫЛКА Документ.бит_ПроектДоговора | И (ВЫРАЗИТЬ(Объект КАК Документ.бит_ПроектДоговора).Дата МЕЖДУ &НачалоПериода И &КонецПериода)) КАК бит_ИсторияИзмененияСтатусовОбъектовСрезПоследних | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | бит_ИсторияИзмененияСтатусовОбъектовСрезПоследних.Объект, | бит_ИсторияИзмененияСтатусовОбъектовСрезПоследних.Статус |ИЗ | РегистрСведений.бит_ИсторияИзмененияСтатусовОбъектов.СрезПоследних( | , | Объект ССЫЛКА Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот | И (ВЫРАЗИТЬ(Объект КАК Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот).Дата МЕЖДУ &НачалоПериода И &КонецПериода)) КАК бит_ИсторияИзмененияСтатусовОбъектовСрезПоследних | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | бит_ИсторияИзмененияСтатусовОбъектовСрезПоследних.Объект, | бит_ИсторияИзмененияСтатусовОбъектовСрезПоследних.Статус |ИЗ | РегистрСведений.бит_ИсторияИзмененияСтатусовОбъектов.СрезПоследних( | , | Объект ССЫЛКА Документ.бит_ЗаявкаНаРасходованиеСредств | И (ВЫРАЗИТЬ(Объект КАК Документ.бит_ЗаявкаНаРасходованиеСредств).Дата МЕЖДУ &НачалоПериода И &КонецПериода)) КАК бит_ИсторияИзмененияСтатусовОбъектовСрезПоследних |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВложенныйЗапрос1.Заявка.Дата КАК ДатаЗаявки, | ВложенныйЗапрос1.Заявка.Номер КАК НомерДокумента, | ВложенныйЗапрос1.Заявка КАК Документ, | ВложенныйЗапрос1.Заявка.Организация КАК Организация, | ВложенныйЗапрос1.Заявка.Контрагент КАК Контрагент, | ВложенныйЗапрос1.Пользователь, | ВложенныйЗапрос1.Доступ, | Статусы.Статус, | ВложенныйЗапрос1.ВАрхив |ИЗ | (ВЫБРАТЬ | СтоунДоступностьЗаявок.Заявка КАК Заявка, | СтоунДоступностьЗаявок.Пользователь КАК Пользователь, | СтоунДоступностьЗаявок.Доступ КАК Доступ, | СтоунДоступностьЗаявок.Заявка.ВАрхив КАК ВАрхив | ИЗ | РегистрСведений.СтоунДоступностьЗаявок КАК СтоунДоступностьЗаявок | ГДЕ | ВЫРАЗИТЬ(СтоунДоступностьЗаявок.Заявка КАК Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот).Дата МЕЖДУ &НачалоПериода И &КонецПериода | И СтоунДоступностьЗаявок.Пользователь = &Ответственный | И СтоунДоступностьЗаявок.Доступ | И СтоунДоступностьЗаявок.Заявка ССЫЛКА Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот) КАК ВложенныйЗапрос1 | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Статусы КАК Статусы | ПО (ВложенныйЗапрос1.Заявка = (ВЫРАЗИТЬ(Статусы.Объект КАК Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот))) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВложенныйЗапрос1.Заявка.Дата, | ВложенныйЗапрос1.Заявка.Номер, | ВложенныйЗапрос1.Заявка, | ВложенныйЗапрос1.Заявка.Организация, | ВложенныйЗапрос1.Заявка.Контрагент, | ВложенныйЗапрос1.Пользователь, | ВложенныйЗапрос1.Доступ, | Статусы.Статус, | ВложенныйЗапрос1.ВАрхив |ИЗ | (ВЫБРАТЬ | СтоунДоступностьЗаявокВАрхиве.Заявка КАК Заявка, | СтоунДоступностьЗаявокВАрхиве.Пользователь КАК Пользователь, | СтоунДоступностьЗаявокВАрхиве.Доступ КАК Доступ, | СтоунДоступностьЗаявокВАрхиве.Заявка.ВАрхив КАК ВАрхив | ИЗ | РегистрСведений.СтоунДоступностьЗаявокВАрхиве КАК СтоунДоступностьЗаявокВАрхиве | ГДЕ | ВЫРАЗИТЬ(СтоунДоступностьЗаявокВАрхиве.Заявка КАК Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот).Дата МЕЖДУ &НачалоПериода И &КонецПериода | И СтоунДоступностьЗаявокВАрхиве.Пользователь = &Ответственный | И СтоунДоступностьЗаявокВАрхиве.Доступ | И СтоунДоступностьЗаявокВАрхиве.Заявка ССЫЛКА Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот) КАК ВложенныйЗапрос1 | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Статусы КАК Статусы | ПО (ВложенныйЗапрос1.Заявка = (ВЫРАЗИТЬ(Статусы.Объект КАК Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот))) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВложенныйЗапрос1.Заявка.Дата, | ВложенныйЗапрос1.Заявка.Номер, | ВложенныйЗапрос1.Заявка, | ВложенныйЗапрос1.Заявка.Организация, | ВложенныйЗапрос1.Заявка.Контрагент, | ВложенныйЗапрос1.Пользователь, | ВложенныйЗапрос1.Доступ, | Статусы.Статус, | ВложенныйЗапрос1.ВАрхив |ИЗ | (ВЫБРАТЬ | СтоунДоступностьЗаявок.Заявка КАК Заявка, | СтоунДоступностьЗаявок.Пользователь КАК Пользователь, | СтоунДоступностьЗаявок.Доступ КАК Доступ, | СтоунДоступностьЗаявок.Заявка.ВАрхив КАК ВАрхив | ИЗ | РегистрСведений.СтоунДоступностьЗаявок КАК СтоунДоступностьЗаявок | ГДЕ | ВЫРАЗИТЬ(СтоунДоступностьЗаявок.Заявка КАК Документ.бит_ПроектДоговора).Дата МЕЖДУ &НачалоПериода И &КонецПериода | И СтоунДоступностьЗаявок.Пользователь = &Ответственный | И СтоунДоступностьЗаявок.Доступ | И СтоунДоступностьЗаявок.Заявка ССЫЛКА Документ.бит_ПроектДоговора) КАК ВложенныйЗапрос1 | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Статусы КАК Статусы | ПО (ВложенныйЗапрос1.Заявка = (ВЫРАЗИТЬ(Статусы.Объект КАК Документ.бит_ПроектДоговора))) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВложенныйЗапрос1.Заявка.Дата, | ВложенныйЗапрос1.Заявка.Номер, | ВложенныйЗапрос1.Заявка, | ВложенныйЗапрос1.Заявка.Организация, | ВложенныйЗапрос1.Заявка.Контрагент, | ВложенныйЗапрос1.Пользователь, | ВложенныйЗапрос1.Доступ, | Статусы.Статус, | ВложенныйЗапрос1.ВАрхив |ИЗ | (ВЫБРАТЬ | СтоунДоступностьЗаявокВАрхиве.Заявка КАК Заявка, | СтоунДоступностьЗаявокВАрхиве.Пользователь КАК Пользователь, | СтоунДоступностьЗаявокВАрхиве.Доступ КАК Доступ, | СтоунДоступностьЗаявокВАрхиве.Заявка.ВАрхив КАК ВАрхив | ИЗ | РегистрСведений.СтоунДоступностьЗаявокВАрхиве КАК СтоунДоступностьЗаявокВАрхиве | ГДЕ | ВЫРАЗИТЬ(СтоунДоступностьЗаявокВАрхиве.Заявка КАК Документ.бит_ПроектДоговора).Дата МЕЖДУ &НачалоПериода И &КонецПериода | И СтоунДоступностьЗаявокВАрхиве.Пользователь = &Ответственный | И СтоунДоступностьЗаявокВАрхиве.Доступ | И СтоунДоступностьЗаявокВАрхиве.Заявка ССЫЛКА Документ.бит_ПроектДоговора) КАК ВложенныйЗапрос1 | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Статусы КАК Статусы | ПО (ВложенныйЗапрос1.Заявка = (ВЫРАЗИТЬ(Статусы.Объект КАК Документ.бит_ПроектДоговора))) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВложенныйЗапрос1.Заявка.Дата, | ВложенныйЗапрос1.Заявка.Номер, | ВложенныйЗапрос1.Заявка, | ВложенныйЗапрос1.Заявка.Организация, | ВложенныйЗапрос1.Заявка.Контрагент, | ВложенныйЗапрос1.Пользователь, | ВложенныйЗапрос1.Доступ, | Статусы.Статус, | ВложенныйЗапрос1.ВАрхив |ИЗ | (ВЫБРАТЬ | СтоунДоступностьЗаявок.Заявка КАК Заявка, | СтоунДоступностьЗаявок.Пользователь КАК Пользователь, | СтоунДоступностьЗаявок.Доступ КАК Доступ, | СтоунДоступностьЗаявок.Заявка.ВАрхив КАК ВАрхив | ИЗ | РегистрСведений.СтоунДоступностьЗаявок КАК СтоунДоступностьЗаявок | ГДЕ | ВЫРАЗИТЬ(СтоунДоступностьЗаявок.Заявка КАК Документ.бит_ЗаявкаНаРасходованиеСредств).Дата МЕЖДУ &НачалоПериода И &КонецПериода | И СтоунДоступностьЗаявок.Пользователь = &Ответственный | И СтоунДоступностьЗаявок.Доступ | И СтоунДоступностьЗаявок.Заявка ССЫЛКА Документ.бит_ЗаявкаНаРасходованиеСредств) КАК ВложенныйЗапрос1 | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Статусы КАК Статусы | ПО (ВложенныйЗапрос1.Заявка = (ВЫРАЗИТЬ(Статусы.Объект КАК Документ.бит_ЗаявкаНаРасходованиеСредств))) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВложенныйЗапрос1.Заявка.Дата, | ВложенныйЗапрос1.Заявка.Номер, | ВложенныйЗапрос1.Заявка, | ВложенныйЗапрос1.Заявка.Организация, | ВложенныйЗапрос1.Заявка.Контрагент, | ВложенныйЗапрос1.Пользователь, | ВложенныйЗапрос1.Доступ, | Статусы.Статус, | ВложенныйЗапрос1.ВАрхив |ИЗ | (ВЫБРАТЬ | СтоунДоступностьЗаявокВАрхиве.Заявка КАК Заявка, | СтоунДоступностьЗаявокВАрхиве.Пользователь КАК Пользователь, | СтоунДоступностьЗаявокВАрхиве.Доступ КАК Доступ, | СтоунДоступностьЗаявокВАрхиве.Заявка.ВАрхив КАК ВАрхив | ИЗ | РегистрСведений.СтоунДоступностьЗаявокВАрхиве КАК СтоунДоступностьЗаявокВАрхиве | ГДЕ | ВЫРАЗИТЬ(СтоунДоступностьЗаявокВАрхиве.Заявка КАК Документ.бит_ЗаявкаНаРасходованиеСредств).Дата МЕЖДУ &НачалоПериода И &КонецПериода | И СтоунДоступностьЗаявокВАрхиве.Пользователь = &Ответственный | И СтоунДоступностьЗаявокВАрхиве.Доступ | И СтоунДоступностьЗаявокВАрхиве.Заявка ССЫЛКА Документ.бит_ЗаявкаНаРасходованиеСредств) КАК ВложенныйЗапрос1 | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Статусы КАК Статусы | ПО (ВложенныйЗапрос1.Заявка = (ВЫРАЗИТЬ(Статусы.Объект КАК Документ.бит_ЗаявкаНаРасходованиеСредств))) | |УПОРЯДОЧИТЬ ПО | ДатаЗаявки";  | 
|||
| 
    1
    
        Dom26    
     17.04.19 
            ✎
    10:36 
 | 
         
        рабоет долго, , где тут могут быть слабые места?     
         | 
|||
| 
    2
    
        Dom26    
     17.04.19 
            ✎
    10:41 
 | 
         
        даже не получается из трех регистров     
         | 
|||
| 
    3
    
        НЕА123    
     17.04.19 
            ✎
    10:41 
 | 
         
        а зачем в одну ВТ все?     
         | 
|||
| 
    4
    
        Широкий    
     17.04.19 
            ✎
    10:41 
 | 
         
        СтоунДоступностьЗаявок.Заявка.ВАрхив КАК ВАрхив 
 
        И ВЫРАЗИТЬ(СтоунДоступностьЗаявок.Заявка КАК Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот).Дата МЕЖДУ &НачалоПериода И &КонецПериода Терпения не хватило прописать Выразить?  | 
|||
| 
    5
    
        Dom26    
     17.04.19 
            ✎
    10:44 
 | 
         
        (4) блин точно, ща посомтрим     
         | 
|||
| 
    6
    
        Мимохожий Однако    
     17.04.19 
            ✎
    10:44 
 | 
         
        Замерь запросы по отдельности. Оптимизируй, а потом объединяй. Или измени план запроса на другой     
         | 
|||
| 
    7
    
        Мимохожий Однако    
     17.04.19 
            ✎
    10:47 
 | 
         
        Можно сначала получить все документы, а потом уже обращаться к таблице истории изменения статусов     
         | 
|||
| 
    8
    
        Широкий    
     17.04.19 
            ✎
    10:48 
 | 
         
        Какой нафиг смысл 3 объединений если у тебя все равно индекс не юзается..
 
        Далай одну выборку (я про самое первое)  | 
|||
| 
    9
    
        Широкий    
     17.04.19 
            ✎
    10:50 
 | 
         
        +6 и да.. сначала получи доки за период..
 
        Потом сделай запро к Регистру сведений с фильтром по выбранным докам - и потом все соедини  | 
|||
| 
    10
    
        Dom26    
     17.04.19 
            ✎
    10:56 
 | 
         
        (8) а разве не обьединения не лучше чем или тут?     
         | 
|||
| 
    11
    
        Жан Пердежон    
     17.04.19 
            ✎
    11:05 
 | 
         
        (0) кстати, если тебе нужен текущий статус, а значение из истории на определенный момент - лучше использовать
 
        РС.бит_СтатусыОбъектов  | 
|||
| 
    12
    
        Широкий    
     17.04.19 
            ✎
    11:08 
 | 
         
        (10) че лучше то?
 
        СрезПоследних само по себе тяжелое.. а ты его три раза делаешь. Причем поиск не по индекус идет  | 
|||
| 
    13
    
        Dom26    
     17.04.19 
            ✎
    11:17 
 | 
         
        (12) а еще такой вопросик надо отдельно ставить условие на тип дока если есть выразить ().дата между...?     
         | 
|||
| 
    14
    
        toypaul    
     гуру 
    17.04.19 
            ✎
    11:18 
 | 
         
        заменить ВЫРАЗИТЬ(Ссылка) на соединение с таблицей нужного документа и сделать отбор по дате из этой таблицы     
         | 
|||
| 
    15
    
        craxx    
     17.04.19 
            ✎
    11:18 
 | 
         
        И вложенные запросы я бы как можно меньше пользовал. Лучше еще одну ВТ     
         | 
|||
| 
    16
    
        Dom26    
     17.04.19 
            ✎
    11:44 
 | 
         
        (14) а разве в связи не надо тоже выразить тогда писать?     
         | 
|||
| 
    17
    
        toypaul    
     гуру 
    17.04.19 
            ✎
    11:53 
 | 
         
        (16) нет     
         | 
|||
| 
    18
    
        Nyoko    
     17.04.19 
            ✎
    12:11 
 | 
         
        (0) 
 
        Заявка = (ВЫРАЗИТЬ(Статусы.Объект КАК Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот))) Замени лучше Заявка = Статусы.Объект и Статусы.Объект Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот  | 
|||
| 
    19
    
        Nyoko    
     17.04.19 
            ✎
    12:11 
 | 
         
        Заявка = Статусы.Объект и Статусы.Объект ссылка Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот     
         | 
|||
| 
    20
    
        Широкий    
     17.04.19 
            ✎
    12:12 
 | 
         
        (13) см 9  -у тебя список доков должен быть в фильтре     
         | 
|||
| 
    21
    
        Glup0sti    
     17.04.19 
            ✎
    12:37 
 | 
         
        Явная ошибка 3 раза срез последних. Нужно "... Объект В (ВЫБРАТЬ Ссылка ИЗ Документ.бит_ПроектДоговора ГДЕ Дата МЕЖДУ ... ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Ссылка ИЗ Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот ГДЕ Дата МЕЖДУ...) ". 
 
        Вложенный запрос вообще не нужен, соединяешь сразу СтоунДоступностьЗаявокВАрхиве И Статусы. ВЫРАЗИТЬ в условии соединения беЗсмысленно Возможно РАЗРЕШЕННЫЕ и на ВТ поставить. Остальное только по плану запроса.  | 
|||
| 
    22
    
        Dom26    
     17.04.19 
            ✎
    16:05 
 | 
         
        (21) там же куча условий во ввложеных запросах, разве сначало он не прведет связь и только потомне наложит условия?     
         | 
|||
| 
    23
    
        Euguln    
     17.04.19 
            ✎
    16:11 
 | 
         
        1. Все обращения к БД по возможности поместить в ВТ.
 
        2. ВТ проиндексировать. 3. Условия отбора ВТ регистра засунуть в поле и проиндексировать.  | 
|||
| 
    24
    
        Маленький Вопросик    
     17.04.19 
            ✎
    17:21 
 | 
         
        Избавься от конструкций
 
        ВложенныйЗапрос1.Заявка.Дата, Как ребята сказали проиндексируй ВТ.  | 
|||
| 
    25
    
        Simod    
     18.04.19 
            ✎
    08:04 
 | 
         
        Трэш какой-то...
 
        Использование "... ССЫЛКА ..." позволяет проверить тип ОБЪЕКТА без соединения с таблицей объекта, а ВЫРАЗИТЬ(...) создает соединение для проверки вхождения ДАТА в диапазон. Поэтому, конструкции типа: ВЫРАЗИТЬ(СтоунДоступностьЗаявок.Заявка КАК Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот).Дата МЕЖДУ &НачалоПериода И &КонецПериода ... И СтоунДоступностьЗаявок.Заявка ССЫЛКА Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот идентичны внутреннему соединению ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот КАК ЗаявкаНаСогласованиеАктаВыполненныхРабот ПО СтоунДоступностьЗаявок.Заявка = ЗаявкаНаСогласованиеАктаВыполненныхРабот.Ссылка И ЗаявкаНаСогласованиеАктаВыполненныхРабот.Дата МЕЖДУ &НачалоПериода И &КонецПериода Как сказали ранее, для среза последних следует собрать ВТ объединением трех типов документов и проиндексировать.  | 
|||
| 
    26
    
        xXeNoNx    
     18.04.19 
            ✎
    09:08 
 | 
         
        А расскажите мне что значит: 
 
        СрезПоследних( | , | Объект ССЫЛКА Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот | И (ВЫРАЗИТЬ(Объект КАК Документ.ЗаявкаНаСогласованиеАктаВыполненныхРабот).Дата МЕЖДУ &НачалоПериода И &КонецПериода)) КАК бит_ИсторияИзмененияСтатусовОбъектовСрезПоследних  | 
|||
| 
    27
    
        Darych    
     18.04.19 
            ✎
    09:11 
 | 
         
        (25) ну индексация... померить так и так надо)     
         | 
|||
| 
    28
    
        xXeNoNx    
     18.04.19 
            ✎
    09:13 
 | 
         
        А шо, нельзя сначала доки получить, а потом сделать отбор срезе?     
         | 
|||
| 
    29
    
        xXeNoNx    
     18.04.19 
            ✎
    09:19 
 | 
         
        (23) лишь бы все индексировать...., тут и помимо индексов косяков дохрена     
         | 
|||
| 
    30
    
        Glup0sti    
     18.04.19 
            ✎
    09:53 
 | 
         
        (22) если хочется, некоторые условия можно в условия соединения, оптимизатор разберется в порядке применения ограничений     
         | 
|||
| 
    31
    
        luter-89    
     18.04.19 
            ✎
    09:56 
 | 
         
        (23) Лишь бы проиндексировать. 
 
        Там где надо и там где не надо...  | 
|||
| 
    32
    
        Simod    
     18.04.19 
            ✎
    10:14 
 | 
         
        Да, если собрать таблицу по трем типам документов, то индексация может ничего не дать, т.к. поле будет составного типа. Но попробовать стоит.     
         | 
|||
| 
    33
    
        Euguln    
     18.04.19 
            ✎
    11:38 
 | 
         
        (29) см п 1.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |