Кружок 1С #1. Индексы в 1С теория и практика

Поділитися
Вставка
  • Опубліковано 27 гру 2024

КОМЕНТАРІ • 23

  • @valentkataev
    @valentkataev Рік тому +1

    После просмотра пару видео подписался, нужный контент. Спасибо.

    • @Softonit
      @Softonit  Рік тому +1

      Спасибо за подписку!

  • @youdontjustifymytrust
    @youdontjustifymytrust Рік тому +1

    Хороший материал. Хоть и подача некоторым в коментах не нравится, но автор затронул довольно сложную тему, за что уже респект. Спасибо.

    • @Softonit
      @Softonit  Рік тому

      Спасибо за отзыв. Действительно, подготовить качественный урок достаточно сложно. Т.к. тема сложная, а объяснения должны быть простыми.

  • @nataliaboychuk1002
    @nataliaboychuk1002 Рік тому +15

    Лектор сам "плавает" в предмете лекции

    • @Softonit
      @Softonit  Рік тому +3

      Это формат кружка. Собрались, кто-то сделал доклад, поговорили. Рассмотрели какие-то примеры. О том, что знать ответы на все вопросы, речи конечно же нет)))
      У меня (у "лектора") нет сертификата "1С:Эксперт по технологическим вопросам". Чтение документации, какие-то эксперименты, разбор примеров и т.д. Это путь изучения любого, кто занимается повышением производительности и чего-то не знать в этой теме, думаю нормально. Лично, не претендую на экспертность.
      Вы ведь тоже ищите ответы на свои вопросы, иначе зачем смотреть это видео?
      Поэтому, если есть конструктивные замечания к моим ответам, было бы здорово если бы вы написали именно об этом.

  • @evgenyb6057
    @evgenyb6057 2 роки тому +3

    Типичная проблема 1: противоречит ИТС. "В основном условии оператор ИЛИ можно использовать только для последнего из используемых или единственного поля индекса, когда оператор ИЛИ можно заменить на оператор В". В указанном примере в индекс мы попадем, если поле Артикул проиндексировано.
    Так же - смотрим пример1 это Регистр Накопления, а на ИТС демонстрируются индексы Регистра Сведений. В данном случае нужно смотреть на индексы таблицы остатков.
    И еще момент - когда индексируются поля измерений, например 2 и 4, не значит что у нас будет создан индекс который будет как комбинация 2-4, такое возможно что только на стороне management studio на уровне SQL. 1С, по факту для каждого генерирует таблицу индексов согласно таблице с ИТС, комбинаций тут не будет. Будет два индекса 2-1-3-4 и 4-1-2-3.

  • @SMSobl
    @SMSobl 2 роки тому

    28:32 - А если дополнить условие чем-то в стиле "&Склад В (Выбрать Ссылка из Справочник.Склады)", их же обычно в средней системе не супермного, не?

    • @Softonit
      @Softonit  2 роки тому

      Если это решит ваши вопросы и при этом скорость работы будет в пределах ожиданий, то почему нет? :-)

  • @hagywagybabii5763
    @hagywagybabii5763 2 роки тому

    42:00. А если я в условии сделаю ГДЕ АРТИКУЛ В("001", "002")

    • @Softonit
      @Softonit  2 роки тому

      Спасибо за вопрос. 1С рекомендует не использовать оператор В, а использовать объединение запросов "... ГДЕ Артикул = "001" и "... ГДЕ Артикул = "002". Об этом написано в документации на сайте ИТС.

  • @littleknight7876
    @littleknight7876 Рік тому +3

    даже Ильюха Мэддисон здесь :D

  • @ivdmal
    @ivdmal 2 роки тому

    А если заменить "ГДЕ Артикул="001" ИЛИ Артикул="002"" на "ГДЕ Артикул В ("001", "002")", мы попадаем в индекс?

    • @Softonit
      @Softonit  2 роки тому

      Надо бы это проверить в SQL Profiler... Есть ощущение, что оператор "В" работает так же как и ИЛИ (в таком случае рекомендуется переписать запрос на объединение запросов), однако вместе с тем на сайте ИТС на странице its.1c.ru/db/v8std/content/658/hdoc есть выдержка:
      "2. Оператор ИЛИ
      2.1. В основном условии оператор ИЛИ можно использовать только для последнего из используемых или единственного поля индекса, когда оператор ИЛИ можно заменить на оператор В.
      ПРАВИЛЬНО:
      ГДЕ
      Таблица.Поле = &Значение1
      ИЛИ Таблица.Поле = &Значение2
      т.к. можно переписать при помощи оператора В (специально переписывать не нужно, можно оставить, как есть):
      ГДЕ
      Таблица.Поле В (&Значения)".
      Этот текст сбивает с толку и становится не понятно "В" это другое и отличается ли это от условия "ИЛИ".

  • @laretyn1917
    @laretyn1917 2 роки тому

    А если ставится условие на регистр с одним измерением составного типа "Документ": "Документ ССЫЛКА Документы.РеализацияТоваровУслуг". Индекс будет использоваться или индексы не работают на такие функции как например "ССЫЛКА", а только на равенство?

    • @Softonit
      @Softonit  2 роки тому +1

      Как я понимаю, "Документ ССЫЛКА Документы.РеализацияТоваровУслуг" не использует индексы. Ее принцип работы в другом. Когда мы НЕ используем такую конструкцию, используется обращение к реквизитам регистратора. Регистратор является полем составного типа, которое может принимать значения ссылки на один из N-видов документов (сколько содержит составной тип). SQL-текст этого запроса будет включать N-левых соединений с таблицами документов. Это может привести к серьезным проблемам производительности при выполнении запроса. Эта конструкция, позволяет сделать ТОЛЬКО ОДНО левое соединение и только с документом РеализацияТоваровУслуг, что существенно ускоряет запрос. Подробнее на ИТС: its.1c.ru/db/v8std/content/654/hdoc

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil 10 місяців тому

    Можно чуть обобщить - индексы БД это частный случай индексов вообще.

  • @RuslanKhamidoullin
    @RuslanKhamidoullin 10 місяців тому

    Кластерный индекс 1, а кол-во столбцов в нём не обязательно должно быть 1.

    • @Softonit
      @Softonit  10 місяців тому

      Верно! Спасибо

  • @MaiorovYury1
    @MaiorovYury1 Рік тому

    15:30 после ответа на этот вопрос поставил дизлайк и выключил видео. Спасибо за старания, но лучше найти что-то более достоверное.

    • @Softonit
      @Softonit  Рік тому

      Спасибо за отзыв. Было бы здорово если бы дополнили и привели бы дополнительные ссылки. С удовольствием бы добавили в описание. Такой информации мало никогда не бывает.

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 10 місяців тому

      да, если не хватает последнего поля, то будет частичный а не полный перебор