Имя: Пароль:
1C
1С v8
Индексирование
0 Max Street
 
01.02.13
17:55
Доброго времени суток. Помогите,
пожалуйста, разобраться с
индексиованием.
1) В свойствах объектов конфигурации
есть свойство "Индексирование". В каких
случаях нужно использовать это свойство
или, может быть, достаточно
индексировать поля в запросе на
закладке "Индекс"?
2) По какому принципу индексировать
поля в запросе? В интернете вычитал,
что индексировать нужно только те поля,
к которым наиболее часто обращаюсь,
т.к. слишком большое количество
индексов негативно отразится на
производительности. Но все-таки, как
правильно выбирать индексируемые
поля?
Пару дней интернет поисков ничего
толкового не дали. Заранее благодарю за
любую помощь :)
1 sapphire
 
01.02.13
17:59
1) Если по этому полю планируется использовать отборы в запросах и т.п.

2) Все зависит от запроса и количества данных.
Индексируют временные таблицы, а не сам результат запроса.
2 Ayvengo
 
01.02.13
18:00
Ну так ты же сам себе по пункту 1 ответил в пункте 2 :)
3 Ayvengo
 
01.02.13
18:02
Вот он правильный ответ:
> что индексировать нужно только те поля, к которым наиболее часто обращаюсь,
А вот к которым ты будешь обращаться - это определять уже тебе - разработчику. А вообще не индексируй, заметишь проблемы - ставь галку.
4 H A D G E H O G s
 
01.02.13
18:04
- Индексировать только то, по чему будешь искать, соединять, фильтровать.
- Индексировать поля таблиц размерами больше 1000 строк (где то так)
- Индексировать поля высокой селективности, как пример

Поле1    Поле2
1        10
1        15
1        89

Поле1 - низкоселективно, поле2 - высокоселективно.
5 Max Street
 
01.02.13
18:04
Спасибо
6 Max Street
 
01.02.13
18:07
Спасибо всем. стало немного понятнее)
7 МихаилМ
 
01.02.13
18:37
(0)
у запроса не закладки.




собственно при использовании индексов
есть 1 проблема - чем больше индекс, тем дольше запись данных.

следствия: разрастание бд (увеличение времени воззтановления из копии), нехватка озу (из-за кэширования)

2 проблема - 1с8 не умеет создавать произвольные индексы составные.

а индексы по 1 полю могут быть неэффективными

3 1с не умеет в запросах указывать   используемые индексы
 
сответственно при проектировании расчитывается частота чтения-записи. предельное и удовлетворительное время ожидания реакции. вычисляется допустимое время обработки потоков данных и предельные размеры потоков и индексов.

для oltp сотношение данных и индексов 1:1
для olap 1:20.

так как 1с как правило смешанная система,
для таблиц(объектов кофигурации) нужно именно расчитвать размеры индексов.

для таблиц до 10 000 записей и в случае кэширования оптимизаторы выполнения запросов
могут предпочесть полные переборы (сканирование) не обращаясь к данным индексов.

управление индексами больше относится к эксплуатации
чем к проектированию от проектировщика требуется грамотное создание кластерных индексов т.к. на них может быть построена логика работы ПО.
8 H A D G E H O G s
 
01.02.13
18:42
"1с8 не умеет создавать произвольные индексы составные. "

Тоесть?
9 H A D G E H O G s
 
01.02.13
18:43
(7) По моим наблюдениям, fullscan SQL использует при размере таблицы меньше 600 строк.
10 H A D G E H O G s
 
01.02.13
18:45
(7) <не умеет в запросах указывать   используемые индексы>

Хинты штоле?
Ага, давать их 1С-негу, великолепно!

Михаил, опять словоизвержение, без конкретики.
H A D G E H O G s смотрит на вас как-то недовольно, свирепо и в то же время грустно и с недоумением.
11 МихаилМ
 
01.02.13
18:50
(8)
пример
есть индекс поле1,поле2,поле3. кластерный  

           в рамках 1с8(0,1,2) не удастся создать индекс
           поле3,поле2,поле1
12 H A D G E H O G s
 
01.02.13
18:53
(11) Не понял.
Давай в терминах 1С
13 МихаилМ
 
01.02.13
19:01
(9)
по моим наблюдениям для мс скл 2005
при 100% попадании в кэш

сканирование таблиц предпочитается и для таблиц больше 10000
строк. видел 20000. тк все используемые 1с субд имеют сложные
адаптивные механизмы может расчет идет от размера таблиц или еще чего-нибуть

про 10000 я где-то прочитал.
14 МихаилМ
 
01.02.13
19:02
(10)

хинты и управление индексами
больше нужны администратору БД чем проектировшщику,
тк тюнинг индексов происходит в процессе эксплуатации
15 H A D G E H O G s
 
01.02.13
19:04
(14) Или по отзывам клиентов.
16 H A D G E H O G s
 
01.02.13
19:04
Что насчет составных полей?
17 Reset
 
01.02.13
19:04
(12) перевод
РС ЦеныНоменклатуры:
ТипЦены
Номенклатура
Характеристика

нельзя сделать индекс
(Характеристика,Номенклатура,ТипЦены)
18 H A D G E H O G s
 
01.02.13
19:07
(17) Пацаны из 1С об этом не знают и делают
19 H A D G E H O G s
 
01.02.13
19:10
(17) Для твоего случая 1С создаст 3 индекса,
ТипЦены
Номенклатура
Характеристика

Номенклатура
ТипЦены
Характеристика

Характеристика
ТипЦены
Номенклатура
20 H A D G E H O G s
 
01.02.13
19:10
(17) А, все, понял
21 H A D G E H O G s
 
01.02.13
19:11
(17) А почему?