|   |   | 
| 
 | Помогите оптимизировать запрос | ☑ | ||
|---|---|---|---|---|
| 0
    
        lapinio 16.08.12✎ 12:12 | 
        ВЫБРАТЬ РАЗЛИЧНЫЕ
  ВнутренниеДокументы.Ссылка, ВнутренниеДокументы.ПометкаУдаления, ВнутренниеДокументы.ВидДокумента, ВнутренниеДокументы.ДатаСоздания, ВнутренниеДокументы.Ответственный ИЗ Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ДоступПользователей.Пользователь КАК Пользователь, ДоступПользователей.Объект КАК Объект, ДоступПользователей.Автор КАК Автор, ДоступПользователей.ДатаОткрытияДоступа КАК ДатаОткрытияДоступа ИЗ РегистрСведений.ДоступПользователей КАК ДоступПользователей) КАК РегистрСведенийДоступПользователей ПО (ВЫБОР КОГДА &ВсеДокументы ТОГДА ИСТИНА ИНАЧЕ ВнутренниеДокументы.Ссылка = РегистрСведенийДоступПользователей.Объект И РегистрСведенийДоступПользователей.Пользователь = &Ответственный КОНЕЦ) | |||
| 1
    
        Alex375 16.08.12✎ 12:14 | 
        1. убери "ВЫБОР" из условия объединения таблиц     | |||
| 2
    
        Alex375 16.08.12✎ 12:14 | 
        2. вместо подзапроса используй пакетный режим - может повысить производительность на SQL     | |||
| 3
    
        lapinio 16.08.12✎ 12:14 | 
        Выбор нужен для фильтра вывода документов     | |||
| 4
    
        lapinio 16.08.12✎ 12:15 | 
        Это в динамическом списке там нет виртуальных таблиц     | |||
| 5
    
        Alex375 16.08.12✎ 12:16 | 
        выбор в объединении ОЧЕНЬ сильно тормозит запрос. Это у тебя самое узкое место сейчас     | |||
| 6
    
        vde69 16.08.12✎ 12:16 | 
        вроде нормальный запрос, проверь индесы     | |||
| 7
    
        vde69 16.08.12✎ 12:17 | 
        кстати выбор можно заменить на
  &ВсеДокументы или (ВнутренниеДокументы.Ссылка = РегистрСведенийДоступПользователей.Объект И РегистрСведенийДоступПользователей.Пользователь = &Ответственный) будет немного лучше | |||
| 8
    
        lapinio 16.08.12✎ 12:19 | 
        проверял. Вроде индексированны. Но запрос долго отрабатывает при открытии формы. База крутится SQL. 5 мин открывается. Или не катит Все документы это кнопка которая видна админу а пользователи видят только свои документы     | |||
| 9
    
        lapinio 16.08.12✎ 12:23 | 
        или прокатило спасибо за подсказку а что еще можно     | |||
| 10
    
        vde69 16.08.12✎ 12:25 | 
        статистику обновить (через часок работы)     | |||
| 11
    
        lapinio 16.08.12✎ 12:26 | 
        ЧТо такое Статистика?     | |||
| 12
    
        МихаилМ 16.08.12✎ 12:28 | 
        такая конструкция "КОГДА &ВсеДокументы"
  дурной тон программирования запросов тк субд не сохраняет такие планы запроса. и стоиих каждый раз заново. для postgreSQL это вообще катастрофа. формируйте текст запроса динамически. либо сооздайте 2 формы. | |||
| 13
    
        lapinio 16.08.12✎ 12:35 | 
        Форма должна быть одна. Смысл этого запроса такой.
  1. Текущий пользователь должен видеть только свои документы или если дали доступ к этому документу 2.Админ должен видеть все документы 3. Данные сравниваются из регистра сведений не периодического если это тек поль и не админ. 4. ВсеДокументы это кнопка для отображнения всех док | |||
| 14
    
        МихаилМ 16.08.12✎ 12:47 | 
        тогда передавайте два параметра 
  условие такое И РегистрСведенийДоступПользователей.Пользователь >= &ОтветственныйМIN И РегистрСведенийДоступПользователей.Пользователь < &ОтветственныйМАХ в случае отбора ОтветственныйМIN = ОтветственныйМАХ с случае полного выбора ОтветственныйМIN = минимальное значение ссылки ОтветственныйМАХ = максимальное или передавайте список, или вычисляте в временной таблице | |||
| 15
    
        lapinio 16.08.12✎ 12:49 | 
        ВЫБРАТЬ
  Спр.Ссылка, Спр.ВидДокумента, Спр.ДатаСоздания, Спр.Ответственный, Спр.ПометкаУдаления ИЗ (ВЫБРАТЬ ВнутренниеДокументы.Ссылка КАК Ссылка, ВнутренниеДокументы.ВидДокумента КАК ВидДокумента, ВнутренниеДокументы.ДатаСоздания КАК ДатаСоздания, ВнутренниеДокументы.Ответственный КАК Ответственный, ВнутренниеДокументы.ПометкаУдаления КАК ПометкаУдаления ИЗ Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы) КАК Спр ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ДоступПользователей.Пользователь КАК Пользователь, ДоступПользователей.Объект КАК Объект, ДоступПользователей.Автор КАК Автор, ДоступПользователей.ДатаОткрытияДоступа КАК ДатаОткрытияДоступа ИЗ РегистрСведений.ДоступПользователей КАК ДоступПользователей) КАК Регистр ПО Спр.Ссылка = Регистр.Объект ГДЕ (&ВсеДокументы = ИСТИНА ИЛИ Спр.Ссылка = Регистр.Объект И Регистр.Пользователь = &Ответственный) | |||
| 16
    
        lapinio 16.08.12✎ 12:50 | 
        Так быстро     | |||
| 17
    
        acsent 16.08.12✎ 12:50 | 
        попробуй напрямую присоединять таблицу     | |||
| 18
    
        lapinio 16.08.12✎ 12:53 | 
        Спасибо вам за помощь     | |||
| 19
    
        lapinio 16.08.12✎ 12:53 | 
        )))))     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |