|   |   | 
| 
 | Какой вариант запроса будет работать быстрее? | ☑ | ||
|---|---|---|---|---|
| 0
    
        ParinovS 13.11.12✎ 10:52 | 
        Доброго времени суток. Подскажите какой вариант запроса будет работать быстрее?
  1. ВЫБРАТЬ Остатки.Сумма, Остатки.СуммаНДС, Документ.Подразделение КАК Подразделение ИЗ Документ.ТоварныйЧек КАК Документ ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки КАК Остатки ПО (Остатки.Регистратор = Документ.Ссылка) ГДЕ Документ.Дата >= &НачПериода И Документ.Дата <= &КонПериода И Документ.Подразделение В ИЕРАРХИИ(&Подразделение) И Документ.Проведен 2. ВЫБРАТЬ ОстаткиОбороты.Склад.Подразделение КАК СкладПодразделение, ОстаткиОбороты.СуммаРасход КАК Сумма, ОстаткиОбороты.СуммаНДСРасход КАК СуммаНДСР ИЗ РегистрНакопления.Остатки.Обороты(&НачПериода, &КонПериода, Регистратор, Склад.Подразделение В ИЕРАРХИИ &Подразделение) КАК ОстаткиОбороты ГДЕ ОстаткиОбороты.Регистратор ССЫЛКА Документ.ТоварныйЧек | |||
| 1
    
        х86 13.11.12✎ 10:56 | 
        отборы в параметрах виртуальной таблицы всегда быстрее     | |||
| 2
    
        acsent 13.11.12✎ 10:58 | 
        (1) В первом запросе вообще обычная таблица используется     | |||
| 3
    
        hhhh 13.11.12✎ 11:00 | 
        (0) таблицы итогов регистра делаются в разрезе месяцев.
  Поэтому ответ зависит от периода. Если нужно отчет за месяц, квартал или год, то второй запрос быстрее, если же за день, неделю или вообще непонятный диапазон дат, то первый будет быстрее. | |||
| 4
    
        х86 13.11.12✎ 11:01 | 
        (2)+ обращение к двум таблицам и левое соединение     | |||
| 5
    
        Лефмихалыч 13.11.12✎ 11:01 | 
        (0) а ни чо, что результат разный у запросов?
  в первом случае выбираются движения по подразделению всех проведенных документов, а во втором - вообще все движения по подразделению | |||
| 6
    
        acsent 13.11.12✎ 11:01 | 
        (4) Виртуальная таблица тоже какбы не одна     | |||
| 7
    
        х86 13.11.12✎ 11:04 | 
        (6)да, Склад.Подразделение не кашерно здесь (2)     | |||
| 8
    
        Hmster 13.11.12✎ 11:04 | 
        (0) какой запрос быстрее?:
  Выбрать * из Справочник.Контрагенты Или Выбрать * из Справочник.Номенклатура | |||
| 9
    
        hhhh 13.11.12✎ 11:05 | 
        (5) кстати да. В первом запросе Регистратор.Подразделение, а во втором Склад.Подразделение. Со складами наверняка быстрее будет, потому что там мальнькая табличка.     | |||
| 10
    
        ParinovS 13.11.12✎ 11:06 | 
        я имел ввиду подход... может плохой пример взял. 
  1. Связь документа (наложение параметров на документы) с таблицей через левое соединение. 2. Наложение параметров на виртуальную таблицу. | |||
| 11
    
        Лефмихалыч 13.11.12✎ 11:07 | 
        (10) общего ответа нет, все зависит от конкретики     | |||
| 12
    
        ParinovS 13.11.12✎ 11:09 | 
        просто я всегда использую вариант 2. недавно увидил использование варианта 1. у довльно умного человека. вот и интересно стало... что быстрее:)     | |||
| 13
    
        Hmster 13.11.12✎ 11:09 | 
        понять можно только на практике и то результат замеров может меняться со временем. Да и вообще разные конструкции для разных целей!     | |||
| 14
    
        vmv 13.11.12✎ 11:11 | 
        (10) виртуальную таблицу с парамтерами, а не условием ГДЕ получить в ВТ и эту ВТ с индексированными полями по соединению соединить с таблицей документа - это быстрее в общем случае
  любой другой лепет, мол, а меня на 0000, 00001 милисекдну лучча - бред и от лукавого | |||
| 15
    
        vmv 13.11.12✎ 11:13 | 
        +(14) естественно все сделать в пакете без инициализации МВТ, все     | |||
| 16
    
        hhhh 13.11.12✎ 11:18 | 
        (12) во втором запросе 
  Склад.Подразделение В ИЕРАРХИИ &Подразделение тоже это ведь соединение вызывается, наложение параметров, да и еще и иерархия - это тоже группа соединений. | |||
| 17
    
        vmv 13.11.12✎ 11:20 | 
        (12) думаешь во 2-м варианте ты уходишь от соединения?)     | |||
| 18
    
        acsent 13.11.12✎ 11:21 | 
        (14) А если отбор по реквизиту регистра нужно делать?     | |||
| 19
    
        ДайтеДайте Сказать 13.11.12✎ 11:23 | 
        > ГДЕ    Документ.Дата >= &НачПериода  И Документ.Дата <= &КонПериода
  Можно поумничать? Почему не применено условие МЕЖДУ? | |||
| 20
    
        vmv 13.11.12✎ 11:24 | 
        (18) получить его как поле в ВТ и делай хоть сразу - при получении ВТ, хоть при соединении     | |||
| 21
    
        ParinovS 13.11.12✎ 11:24 | 
        (16) и (19) я запросы писал как пример, мне важно было узнать быстроту вариантов подхода описанных в (10)     | |||
| 22
    
        Sammo 13.11.12✎ 11:27 | 
        (1) Не всегда. Реальный пример - отбор по не первому измерению причем не по селективному. Быстрее оказалось отобрать сначала, и потом наложить условие в Где     | |||
| 23
    
        МишКа 13.11.12✎ 11:29 | 
        (0) А что, первый запрос разве будет работать?     | |||
| 24
    
        ParinovS 13.11.12✎ 11:33 | 
        (23) читай, пожалуйста, всю ветку (10)     | |||
| 25
    
        dk 13.11.12✎ 11:36 | 
        (24) с соединениями аккуратно надо
  т.к. фильтр накладывается после всех соединений т.е. выгоднее сначала применить все возможные фильтры и только потом делать соединения | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |