Индексы

Обсуждение вопросов по разработке программ в среде продуктов копорации "Progress Software"
light
Старожил
Сообщения: 26
Зарегистрирован: 14 мар 2002, 03:00

Сообщение light » 14 мар 2002, 11:20

Доброго дня!
Вот какой вопрос у меня - может - кто знает чего - как количество индексов в базе влияет на общую производительность. Т.е. если я создаю индекс на каждый нужный случай, то со временем число индексов в базе постоянно увеличивается. Не может ли этот рост привести к каким-то отрицательным последствиям? А то уж больно хорошо получается - добавил нужный индекс, и поиск, перебор и т.п. работает моментально. Какие будут мнения?
Спасибо.

Гость

re:Индексы

Сообщение Гость » 18 мар 2002, 18:47

Увеличение кол-ва индексов имеет 3 отрицательных последствия:
1) увеличивается время создания записей и модификации записей, если были изменения индексных полей - это самая заметная неприятность.
2) при слишком большом кол-ве индексов можно упереться в потолок в 16384 индекса (при размере блока 4k), правда для этого надо очень сильно постараться:)
3) увеличивается размер базы, иногда довольно значительно.
Так что выбирай, что для тебя лучше.
Если есть таблица в которую пользователи вколачивают десятки тысяч записей в день, то надо лучше продумывать индексы, минимизируя их кол-во. Если тебе надо раз в месяц что-то по ней получить, возможно, что вообще стоит отказаться от нового индекса, а взять наиболее подходящий и искать перебором.
И наоборот, если таблица маленькая, но обращаешься ты к ней те же десятки тысяч раз в день, то лучше добавить побольше индексов.

Algernon
Новичок
Сообщения: 4
Зарегистрирован: 05 мар 2002, 03:00

re:Индексы

Сообщение Algernon » 18 мар 2002, 23:59

Насчет индексов - когда выполняется запрос с каким-то критерием (например
for each [table] where [field1] = "" and [field2] = "" etc.), Progress при компиляции сам выбирает, какой из индексов использовать в данном запросе (если, конечно, это не указано в запросе напрямую). Порой бывает очень удобно создавать индекс на несколько полей (когда точно знаешь, какие запросы будешь использовать). Это описано в Help, насколько я помню, определение диапазона, на который распространяется действие индекса при конкретном запросе, называется bracketing. Следует обратить внимание на использование неравенств в запросе (в хелпе, вроде, были примеры).
Давно не писал на Progress, надеюсь, ничего не напутал :smile:

P.S.
Поскольку девятку еще не ковырял, то не могу утверждать, что там все так же.

Аватара пользователя
dmi
Старожил
Сообщения: 1523
Зарегистрирован: 27 сен 2001, 03:00
Откуда: Москва

re:Индексы

Сообщение dmi » 19 мар 2002, 14:58



bulklodd
Старожил
Сообщения: 448
Зарегистрирован: 27 июл 2001, 03:00
Откуда: Москва

re:Индексы

Сообщение bulklodd » 26 апр 2002, 09:37