Имя: Пароль:
1C
1С v8
Индексирование реквизитов
0 Aleksey1989
 
17.02.14
09:11
Добрый день. Помогите, пжл, советом. В документе есть реквизит, который не индексируется. Если я включу индексирование для этого реквизита, а потом выключу, то индексы для этого реквизита из БД удалятся?
1 Lama12
 
17.02.14
09:13
Проверь на копии.
2 1Сергей
 
17.02.14
09:13
они не будут использоваться
3 Aleksey1989
 
17.02.14
09:14
(2) Т.е. в базе они останутся?
4 Поpyчик-4
 
17.02.14
09:18
По логике выключение индексирования должно означать DROP INDEX index_name ON tbl_name или ALTER TABLE tbl_name DROP INDEX index_name
5 ДенисЧ
 
17.02.14
09:19
удалятся
6 Мимохожий Однако
 
17.02.14
09:22
(0)Для чего такие манипуляции?
7 hhhh
 
17.02.14
09:22
(3) чтобы размер базы уменьшился, делай ТИИ сжатие базы
8 Aleksey1989
 
17.02.14
09:24
(6) Есть самописная конфа, в которой есть форма списка с отбором по куче реквизитов, которые не являются индексными и которые очень часто используются.
9 Мимохожий Однако
 
17.02.14
09:25
ну, и?
10 Поpyчик-4
 
17.02.14
09:25
(7) Сжатие таблиц только для файловой базыю
11 Aleksey1989
 
17.02.14
09:28
(9) Если реквизиты будут индексными, в этом случае быстрее же будет происходить отбор. База занимает почти 4 гБ, работает в файловом режиме, поэтому и интересуюсь, удалятся ли в случае чего индексы или нет.
12 hhhh
 
17.02.14
09:28
(10) а в SQL если нажать? Не сработает?
13 Мимохожий Однако
 
17.02.14
09:34
"Вот оно что, Михалыч..". Индексируй, не индексируй. А поможет только свёртка, если на клиент-сервер.
14 Мимохожий Однако
 
17.02.14
09:34
*если НЕ клиент-сервер
15 Поpyчик-4
 
17.02.14
09:35
(12) Средствами SQL сработает.
16 Torquader
 
17.02.14
12:21
(15) Если хочется, чтобы всё было гладко - то выгрузка и загрузка.
Просто, нужно понимать, что SQL специально оставляет свободные места в таблицах, чтобы можно было вставлять элементы без необходимости открытия новых страниц для таблицы.

Если поиск по нескольким реквизитам, то нужно понимать, что или вы сделаете все возможные индексы или всё равно будет выполняться сканирование таблицы.

SELECT ... FROM [Table] WHERE A=Val1 AND B=Val2
будет требовать наличия индекса A,B или B,A - если его нет, то будут рассматриваться A или B - если есть оба, то SQL-сервер по каким-то алгоритмам будет выбирать какой использовать.
17 Torquader
 
17.02.14
12:24
А - версия-то файловая.
Тут немного хуже - наличие индексов предполагает, что при записи они будут обновляться, что создаст дополнительную нагрузку на файловый движок, а так как в случае файловой версии блокируется вся таблица, то будут некоторые ожидания, если в эту таблицу ведётся частая запись.
18 H A D G E H O G s
 
17.02.14
12:26
А если индексировать еще и реквизит типа Организация, Контрагент, Склад - то вообще никаких плюсов из за низкой селективности.
19 Torquader
 
17.02.14
12:28
Поэтому, я бы посмотрел - какие отборы пользователи устанавливают и индексировал бы только те поля, которые практически во всех отборах встречаются и содержат наибольшее количество различных значений.