Доброго дня!
Вот какой вопрос у меня - может - кто знает чего - как количество индексов в базе влияет на общую производительность. Т.е. если я создаю индекс на каждый нужный случай, то со временем число индексов в базе постоянно увеличивается. Не может ли этот рост привести к каким-то отрицательным последствиям? А то уж больно хорошо получается - добавил нужный индекс, и поиск, перебор и т.п. работает моментально. Какие будут мнения?
Спасибо.
Индексы
re:Индексы
Увеличение кол-ва индексов имеет 3 отрицательных последствия:
1) увеличивается время создания записей и модификации записей, если были изменения индексных полей - это самая заметная неприятность.
2) при слишком большом кол-ве индексов можно упереться в потолок в 16384 индекса (при размере блока 4k), правда для этого надо очень сильно постараться:)
3) увеличивается размер базы, иногда довольно значительно.
Так что выбирай, что для тебя лучше.
Если есть таблица в которую пользователи вколачивают десятки тысяч записей в день, то надо лучше продумывать индексы, минимизируя их кол-во. Если тебе надо раз в месяц что-то по ней получить, возможно, что вообще стоит отказаться от нового индекса, а взять наиболее подходящий и искать перебором.
И наоборот, если таблица маленькая, но обращаешься ты к ней те же десятки тысяч раз в день, то лучше добавить побольше индексов.
1) увеличивается время создания записей и модификации записей, если были изменения индексных полей - это самая заметная неприятность.
2) при слишком большом кол-ве индексов можно упереться в потолок в 16384 индекса (при размере блока 4k), правда для этого надо очень сильно постараться:)
3) увеличивается размер базы, иногда довольно значительно.
Так что выбирай, что для тебя лучше.
Если есть таблица в которую пользователи вколачивают десятки тысяч записей в день, то надо лучше продумывать индексы, минимизируя их кол-во. Если тебе надо раз в месяц что-то по ней получить, возможно, что вообще стоит отказаться от нового индекса, а взять наиболее подходящий и искать перебором.
И наоборот, если таблица маленькая, но обращаешься ты к ней те же десятки тысяч раз в день, то лучше добавить побольше индексов.
re:Индексы
Насчет индексов - когда выполняется запрос с каким-то критерием (например
for each [table] where [field1] = "" and [field2] = "" etc.), Progress при компиляции сам выбирает, какой из индексов использовать в данном запросе (если, конечно, это не указано в запросе напрямую). Порой бывает очень удобно создавать индекс на несколько полей (когда точно знаешь, какие запросы будешь использовать). Это описано в Help, насколько я помню, определение диапазона, на который распространяется действие индекса при конкретном запросе, называется bracketing. Следует обратить внимание на использование неравенств в запросе (в хелпе, вроде, были примеры).
Давно не писал на Progress, надеюсь, ничего не напутал
P.S.
Поскольку девятку еще не ковырял, то не могу утверждать, что там все так же.
for each [table] where [field1] = "" and [field2] = "" etc.), Progress при компиляции сам выбирает, какой из индексов использовать в данном запросе (если, конечно, это не указано в запросе напрямую). Порой бывает очень удобно создавать индекс на несколько полей (когда точно знаешь, какие запросы будешь использовать). Это описано в Help, насколько я помню, определение диапазона, на который распространяется действие индекса при конкретном запросе, называется bracketing. Следует обратить внимание на использование неравенств в запросе (в хелпе, вроде, были примеры).
Давно не писал на Progress, надеюсь, ничего не напутал
P.S.
Поскольку девятку еще не ковырял, то не могу утверждать, что там все так же.