![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Оптимизация запроса... [D6, IB6.x, FireBird]
plans © (2003-05-27 10:17:00)Мастера, как ускорить запрос?
При выполнении в IBManager пишет -
PLAN JOIN (JOIN (JOIN (T1 NATURAL,T2 NATURAL),T3 NATURAL),T4 NATURAL)
Что из это следует? По полям связи таблиц индексы построены...
plans (2003-05-27 12:09:00) [1]2 Jophnmen
когда есть поле FK и еще по нем же просто индек, то в плане показывает, что индекс не подключаеться :((
plans (2003-05-27 11:51:00) [2]все заработало... :)
plans (2003-05-27 11:32:00) [3]вот столкнулся с тем, что когда есть FK, то индекс не хочет подключаться...
plans (2003-05-27 11:13:00) [4]rdb$relation_constraints правда что-то много времени забирает.
plans (2003-05-27 11:11:00) [5]Мастаки, спасибо. все заработало...Сначала не работало, теперь работает. Чуть глюкавый IBManeger или я :)
plans (2003-05-27 11:00:00) [6]
> Жук © (27.05.03 10:56)
пытаюсь явно указать план, ругается на
то что индексов нет...я пишу явно имя индексов, а не через системные таблицы, а как узнать имя индекса в системной таблице?
Johnmen (2003-05-27 10:57:00) [7]В общем и целом :
У таблицы (table1) д.б. FK на поля, ссылающиеся в справочники...
У справочников д.б. PK, на которые ссылаются FK из table1...
Жук (2003-05-27 10:56:00) [8]Ничего не надо создавать больше. У меня в аналогичной ситуации план такой :
PLAN JOIN (JOIN (JOIN (VO NATURAL,O INDEX (RDB$PRIMARY21)),P INDEX (RDB$PRIMARY20)),A INDEX (RDB$PRIMARY9)).
Всё работает. Что-то тут не чисто...
Zz_ (2003-05-27 10:55:00) [9]нет, по обстоятельствам
plans (2003-05-27 10:54:00) [10]2 Zz_
> plan join (
> TBL_S NATURAL,
обязательно первая строка Natural?
plans (2003-05-27 10:50:00) [11]
> Johnmen © (27.05.03 10:46)
посоздавал я у справочных таблиц индексы, план не изменился.
Johnmen (2003-05-27 10:46:00) [12]PK => UNIQUE INDEX, но не наоборот...
plans (2003-05-27 10:42:00) [13]
> Жук © (27.05.03 10:41)
ты прав. А что это разве не индексы?
Жук (2003-05-27 10:41:00) [14]
> Johnmen © (27.05.03 10:37)
> То есть на таблицы, кроме table1, никаких индексов нет ?
> :)
Я думаю, что в остальных - PK :-)))
Johnmen (2003-05-27 10:37:00) [15]То есть на таблицы, кроме table1, никаких индексов нет ? :)
plans (2003-05-27 10:34:00) [16]
> А внешние ключи есть ?
FK? нет.
Жук (2003-05-27 10:30:00) [17]
> plans (27.05.03 10:17)
А внешние ключи есть ?
Zz_ (2003-05-27 10:27:00) [18]Явно прописывай план.
У меня был случай, когда запрос,
выполняющийся полторы минуты,
после явного задания плана
стал выполняться за 7 (семь) секунд.
plan join (
TBL_S NATURAL,
TBL_M INDEX (TBL_M_IDX2),
TBL_G INDEX (TBL_G_IDX1),
TBL_A INDEX (TBL_A_IDX1),
TBL_T INDEX (TBL_T_IDX1),
TBL_Q INDEX (TBL_Q_IDX2)"
)
plans (2003-05-27 10:27:00) [19]
select t1.f1, t2.f1, t3.f2, t4.f2
from table1 t1
left join table2 t2 on t1.id2 = t2.id
left join table3 t3 on t1.id3 = t3.id
left join table4 t4 on t1.id4 = t4.id
where t1.id_owner=:id_owner
CREATE INDEX IDX_id2 ON table1 (id2);
CREATE INDEX IDX_id5 ON table1 (id_owner);
CREATE INDEX IDX_id3 ON table1 (id3);
CREATE INDEX IDX_id4 ON table1 (id4);
Johnmen (2003-05-27 10:21:00) [20]А где сам запрос ? И где описание индексов ?