![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Предложения по оптимизации ? [D6, IB6.x, Firebird]
Dimedrol © (2004-05-21 18:13:00)Коллеги, хочу совета.
У меня есть табличка, там ок. 1.100.000 записей.
Мне нужно на форме в DBLookupComboBoxEh
вытащить оттуда выборку некоторых названий.
Запрос -
select f1,f2,f3 from MY_TABLE where f2=2
У поля f2- малая "перечисляемость", поэтому индекс по нему не построен.
Для возможного ускорения построен индекс сразу по 3 вынимаемым полям, что ничуть не улучшило производительность.
В результате запроса вынимается всего 77 результатов,
но скорость работы - весьма невысока. :-(
IBExpert показывает в Performance Analysis - 1 126 670.
Это довольно долго.
При показе формы приходится ждать.
В качестве DBAccess компонент использую FibPlus.
Пожно ли как-то ускорить работу этого участка программы ?
(DB - Firebird 1.5)
dimm22 (2004-05-21 19:09:00) [1]
> У поля f2 - малая "перечисляемость", поэтому индекс по нему
> не построен.
Не совсем понятно как это может быть малая перечисляемость если записей 1 100 000. А при запросе select f1,f2,f3 from MY_TABLE where f2=2 получаешь 77 записей. Это в среднем получается 1 100 000/77=14286 вариантов. Хотя если f2 заполняется значениями неравномерно, то дело другое.
Dimedrol (2004-05-21 18:38:00) [2]Ага... Действительно!
Помогло! 8-)
Спасибо!
Vlad (2004-05-21 18:23:00) [3]
> Запрос -
> select f1,f2,f3 from MY_TABLE where f2=2
>
> У поля f2 - малая "перечисляемость", поэтому индекс по нему
> не построен.
Ну если по f2 нет индекса, так чего же ты хочешь ?
Тут нужен индекс именно по этому полю, без всяких других полей