Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Оптимизация запроса... [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]

А где сам запрос ? И где описание индексов ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо