Ограничете максималния размер на индексираните данни до 1c. Особености при използването на опцията за индексиране "Индекс с допълнителна поръчка". Индексиране с незадължителна поръчка

или

Защо разработчикът на 1C трябва да "индексира" измервания и подробности?

- Е, имаш молби! - каза базата данни и закачи ...

Краткият отговор на въпроса за заглавката е, че това ще позволи бързото изпълнение на заявките и ще намали отрицателното въздействие от блокирането върху.

Какво е индекс?

Оптимизиране на разположението на индекса

Ако обемът на таблиците не им позволява да се „поберат“ в RAM на сървъра, скоростта на дисковата подсистема (I/O) е на първо място. И тук можете да обърнете внимание на възможността за поставяне на индекси в отделни файлове, разположени на различни твърди дискове.

Подробно описание на действията http: // technet.microsoft.com/ ru-ru/ библиотека/ Госпожица175905.aspx
Използването на индекс от различна файлова група подобрява производителността на неклъстерираните индекси поради паралелизма между I/O и самия индекс.
За оразмеряване можете да използвате горната обработка.

Влияние на индексите върху бравите

Липсата на необходимия индекс за заявката означава итерация на всички записи на таблицата, което от своя страна води до прекомерни заключвания, т.е. ненужните записи са блокирани. Освен това, колкото по-дълго се изпълнява заявката поради липсващи индекси, толкова по-дълго е времето за задържане на заключване.
Друга причина за заключване е малкият брой записи в таблиците. В тази връзка SQL Server, когато избира план за изпълнение на заявка, не използва индекси, а обикаля цялата таблица (Сканиране на таблицата), блокирайки цялата. За да се избегнат такива заключвания, е необходимо да се увеличи броят на записите в таблици до 1500-2000. В този случай сканирането на таблици става по-скъпо и SQL Server започва да използва индекси. Разбира се, това не винаги може да се направи, редица директории като "Организации", "Складове", "Подразделения" и т.н. обикновено има малко записи. В тези случаи индексирането няма да подобри производителността.

Индекс на ефективност

Вече отбелязахме в заглавието на тази статия, че се интересуваме от ефекта на индексите върху производителността на заявката. И така, индексите са най-подходящи за следните типове задачи:

  • Заявки, които определят "тесни" критерии за търсене.Такива заявки трябва да четат само малък брой редове, които отговарят на определени критерии.
  • Заявки, които определят диапазон от стойности.Тези заявки също трябва да четат малък брой редове.
  • Търсене, което се използва при операции за свързване.Колоните, които често се използват като ключове за свързване, са чудесни за индекси.
  • Търсене, което чете данни в определен ред.Ако резултатният набор от данни трябва да бъде сортиран в реда на клъстерирания индекс, тогава сортирането е ненужно, тъй като наборът от данни за резултат вече е сортиран предварително. Например, ако клъстерираният индекс е създаден върху колони фамилия (фамилия), име (първо име) и приложението изисква сортиране по фамилия и след това първо, тогава няма нужда да добавяте израз ORDER BY.

Въпреки това, за цялата полезност на индексите, има едно много важно НО - индексът трябва да бъде "ефективно използван" и трябва да ви позволява да намирате данни, използвайки по-малко I/O операции и количеството системни ресурси. Обратно, неизползваните (рядко използвани) индекси вероятно ще влошат скоростта на запис на данни (тъй като всяка операция, която променя данните, трябва също да опреснява индексните страници) и да създадат излишно пространство в базата данни.

Покриване(за дадена заявка) се нарича индекс, в който има всички необходими полета за тази заявка. Например, ако е създаден индекс върху колони a, b и c и операторът SELECT изисква данни само от тези колони, тогава се изисква само достъп до индекса.

За да определим ефективността на индекса, можем да направим груба оценка с помощта на безплатна онлайн услуга, показваща „плана за изпълнение на заявката“ и използваните индекси.

Правилното използване на индекси може да ускори заявките не само няколко пъти, но стотици, понякога дори хиляди пъти.

Този вид ускорение просто не е възможно с хардуер.Следователно на тази тема трябва да се обърне специално внимание.

Често, за да ускорите заявката, трябва да създадете свой собствен индекс и можете да направите това по няколко различни начина.

Във видео уроците ще разгледаме няколко начина за създаване на индекс. Ще разгледаме и ситуацията, когато индексът на необходимата композиция не може да бъде създаден със стандартни инструменти на платформата и ще трябва да бъде създаден в СУБД.

Настройване на индекси с помощта на стандартни инструменти на платформата

Урокът показва кои индекси всъщност се създават за обекти на ниво СУБД.
В тази тема не всичко е толкова очевидно, колкото изглежда на пръв поглед. Всъщност за редица обекти има функции за създаване на индекси.
Ще разгледаме всички нюанси в това видео.

Индексиране с незадължителна поръчка

Видеото показва разликата между опцията за изграждане на индекс Индексот Индекс с доп. рационализиране.
Примерът показва кой индекс ще бъде изграден от платформата при използване на допълнителна поръчка.

Създаване на индекс за регистрови измерения

Индексирането на първото измерение на регистрите има няколко нюанса.
Видеото показва кои индекси се създават за размерите на регистъра. Разгледана е и ситуацията с индексиране на първото измерение на регистъра.

Днес ще говорим за MS SQL индексите и тяхната вътрешна структура. Ще се опитам да говоря за индексите както от гледна точка на СУБД, така и от гледна точка на 1C 8.3.

Индексите са набор от връзки, подредени по конкретни колони, създадени за оптимизиране на производителността на MS SQL СУБД.

Неявно създаване на индекси:

Платформата създава индекси самостоятелно според ключовете за данни (референтен, код, име, размери и т.н.), известни за всеки обект с метаданни.

Изрично създаване на индексивъзможно по три начина:

  1. Задаване на флага "Индекс" до полето (променлива / измерение). Опция „Индекс с доп. чрез поръчка "добавя към индекса полето" Код "или" Име "(предимно за).
  2. Добавяне на поле към "".
  3. Посочване на индексирано поле в заявка с помощта на конструкцията "".

Вземете 267 1C видео уроци безплатно:

Индекси в Microsoft SQL СУБД

Индексите в MS SQL СУБД са страници с данни от 8 KB всяка. Въпреки факта, че индексите са предназначени да подобрят производителността на СУБД, те имат определени недостатъци - заемат дисково пространство и забавят СУБД при записване на редове.

Видове индекси в MS SQL DBMS:

  1. Неклъстерирани индекси- такива индекси не възстановяват таблици, а само организират връзки.
  2. Клъстерирани индексиса необходими за изграждане на таблицата в съответствие с индекса. Данните са сортирани, например, по азбучен ред. Не е валидно за често сменящи се колони. СУБД постоянно физически възстановява таблицата в този индекс.
  3. Уникални индекси- един вид "добавка" за клъстерирани и неклъстерирани индекси. Такъв индекс е уникален по отношение на ключови полета.

Типове ключове в СУБД:

  • Първичен ключ- набор от колони, които уникално характеризират реда.
  • Външен ключ- поле на таблица, което съхранява стойността на първичния ключ с цел организиране на връзката между таблиците. 1C не използва този тип ключове.

Важни нюанси на използването на индекси