| 
    
        
     
     | 
    
    
  | 
Оптимизация запроса в 1С | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        SashulkaBlond    
     12.11.15 
            ✎
    03:05 
 | 
         
        Здравствуйте, господа форумчане! 1С стала изучать недавно, поэтому прошу помочь гуру 1С, разобраться мне с такой задачей:
 
        Имеется таблица Table1 с полями N (строка),D1,D2 (дата) и таблица Table2 с полями N (строка) и D (дата). Таблица Table1 имеет очень много строк,Table2 ,наоборот, мало. И есть запрос: ВЫБРАТЬ Table1.N, Table1.D1, Table1.D2, Table2.N ИЗ Table1 КАК Table1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Table2 КАК Table2 ПО (Table2.D МЕЖДУ Table1.D1 И Table1.D2) Как оптимизировать запрос, чтобы уменьшить время его выполнения?  | 
|||
| 
    1
    
        Sammo    
     12.11.15 
            ✎
    05:13 
 | 
         
        Никак.
 
        Проверить, чтобы поля были индексированы. Попробовать какими-то дополнительными условиями усечь таблицу 1 перед объединением. Попробовать по-другому получать таблицы, чтобы не было такого условия, т.е.е пересмотреть архитектуру.  | 
|||
| 
    2
    
        rphosts    
     12.11.15 
            ✎
    05:24 
 | 
         
        (0) можно попробовать выгрузить Таблицу1 во временную таблицу пакета запросов а уже потом соединять с Таблицей2. Но не факт что:
 
        1.поможет. 2.результат не измениться при переходе к другому способу хранения ИБ (файловая, Postgres, MS-SQL). Кроме того можно для Т1 построить индекс по D1. Опять-же можно попробовать скомбинировать оба способа. В общем пробовать и мерить производительность. PS и не надо называть так отвратительно имена полей и таблиц  | 
|||
| 
    3
    
        ILM    
     гуру 
    12.11.15 
            ✎
    06:30 
 | 
         
        Сначала соедини по N, помести в ТМП, потом уже внутреннее соединение с условием.     
         | 
|||
| 
    4
    
        Горогуля    
     12.11.15 
            ✎
    06:38 
 | 
         
        зачем по Н?     
         | 
|||
| 
    5
    
        Demiurg    
     12.11.15 
            ✎
    10:23 
 | 
         
        Table2 слева должна быть, а не справа     
         | 
|||
| 
    6
    
        Ildarovich    
     12.11.15 
            ✎
    12:28 
 | 
         
        А нельзя ли узнать "фактуру" задачи. Чтобы размеры таблиц прикинуть, диапазон значений полей и так далее. Могут ли перекрываться интервалы (D1,D2) разных записей?
 
        Если Dх - это даты без времени, то я бы "развернул" таблицу1 по отдельным датам и пользовался соединением по условию равенства. Есть и другие неочевидные способы. Нужна фактура задачи.  | 
|||
| 
    7
    
        MadJhey    
     12.11.15 
            ✎
    12:34 
 | 
         
        (1) + поля условия соединения должны быть проиндексированы.     
         | 
|||
| 
    8
    
        MadJhey    
     12.11.15 
            ✎
    12:35 
 | 
         
        Посмотреть план запроса, убедится что нет сканирования таблиц.     
         | 
|||
| 
    9
    
        Горогуля    
     12.11.15 
            ✎
    13:42 
 | 
         
        девушка "1С стала изучать недавно", а вы тут налетели все. правильный ответ: "всё хорошо"     
         | 
|||
| 
    10
    
        Горогуля    
     12.11.15 
            ✎
    13:43 
 | 
         
        +(9) кроме фото в ЛК     
         | 
|||
| 
    11
    
        SashulkaBlond    
     13.11.15 
            ✎
    00:19 
 | 
         
        Спасибо, всем, кто отвечал по-сути, а не про фото. Фото, господин, Горогуля, в других местах размещают. Вы не заблудились, случаем?;)     
         | 
|||
| 
    12
    
        Горогуля    
     13.11.15 
            ✎
    05:19 
 | 
         
        (11) это ты так думаешь     
         | 
|||
| 
    13
    
        Sammo    
     модератор 
    13.11.15 
            ✎
    06:42 
 | 
         
        (11) Это традиция. Если размещена интересная фото, то больше шансов на более полные ответы     
         | 
|||
| 
    14
    
        Drac0    
     13.11.15 
            ✎
    06:51 
 | 
         
        (10) ты точно хочешь увидеть "её" фото: http://m.my.mail.ru/mail/vitmang/photo ? :-)     
         | 
|||
| 
    15
    
        Горогуля    
     13.11.15 
            ✎
    07:02 
 | 
         
        ну хотелось бы фото Александры, конечно, а не того Виталия, который её тут регистрировал ;)     
         | 
|||
| 
    16
    
        ViSo76    
     13.11.15 
            ✎
    09:40 
 | 
         
        (11) Без фотографии девушек-программисток не воспринимают всерьёз.
 
        По сабжу попробуй так: ВЫБРАТЬ Table2.N, Table2.D ПОМЕСТИТЬ ВТ_Table2 ИЗ ( ВЫБРАТЬ МИНИМУМ( D1 ) КАК D1, МАКСИМУМ( D2 ) КАК D2 ИЗ Table1 ) КАК тз_Time, Table2 ГДЕ Table2.D МЕЖДУ тз_Time.D1 И тз_Time.D2 ИНДЕКСИРОВАТЬ ПО Table2.D ; ВЫБРАТЬ Table1.N, Table1.D1, Table1.D2, ВТ_Table2.N ИЗ Table1 СОЕДИНЕНИЕ ВТ_Table2 ПО ВТ_Table2.D МЕЖДУ Table1.D1 И Table1.D2  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |