|
Странности планировщика запросов IB. Поможите, плз!
|
|||
---|---|---|---|
#18+
Доброго всем <GMT>! Не ругайте за долгое предисловие, но "зарегистрировано открытие"! Оптимизатор-планировщик работает "странновато", мягко сказать. Есть таблица pricelist (250000 строк), справочник валют exchlist (5 строк), pricelist ссылается на exchlist по FOREIGN KEY (поле exchnumb -- код вылюты) Для pricelist'a определен первичный ключ и еще специальный ИНДЕКС по полям (partoem,partnumber) -- коду поставщика и номенкл. номерам изделий. Установлен IB 6.5, машина (localhost) - P-III/700MHz/128Mb RAM. Инструмент - ШИ Учзуке (sorry, IB Expert :)) Делаем два запроса: в первом после WHERE... добавляем ORDER BY ... ROWS 20 (например), во втором - не добавляем ничего. Ну так вот: первый запрос "шуршит" полминуты, выдает 20 строк и в Perfomance Analysis я вижу, что обработано несколько тысяч строк. 1) SELECT pricelist.partnumber,pricelist.baseval, exchlist.name FROM oemprice JOIN exchlist ON pricelist.exchnumb=exchlist.numb WHERE pricelist.partoem=2040 ORDER BY partnumber ROWS 20 Во втором запросе (без order by...) все работает быстро: 2) SELECT pricelist.partnumber,pricelist.baseval, exchlist.name FROM oemprice JOIN exchlist ON pricelist.exchnumb=exchlist.numb WHERE pricelist.partoem=2040 /* БЕЗ инструкции ORDER BY ... */ Мой вопрос уважаемым знатокам: где и когда отрабатывает свою часть инструкция ORDER BY ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2003, 19:13 |
|
Странности планировщика запросов IB. Поможите, плз!
|
|||
---|---|---|---|
#18+
У IB и его клонов оптимизатор, конечно, так себе, но у самого ИБ он уж точно хуже, чем у дятла и ФБ. А на вопрос сам себе ответь, посмотрев план. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2003, 19:23 |
|
Странности планировщика запросов IB. Поможите, плз!
|
|||
---|---|---|---|
#18+
в первом запросе план такой: PLAN JOIN ( PARTPRICE(INDEX.....), EXCHLIST(...)), а во втором такой: PLAN SORT (JOIN (PARTPRICE(INDEX.....), EXCHLIST(...)) ) Что означает вмешательство слова "SORT"? ГДЕ и КОГДА отрабатывает этот SORT, до или после получения выборки-результата? Мне лично кажется, что ДО! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2003, 19:30 |
|
Странности планировщика запросов IB. Поможите, плз!
|
|||
---|---|---|---|
#18+
Ну я по планам не спец, но логично предположить, что они изнутри наружу выполнятся, т.е. SORT будет последним. Я тоже замечал, что сортировках на операциях соединения совсем плохо работает, поэтому советую попробовать 2 варианта: 1. Не уверен, что поможет, но попробуй поменять на левое соединение. 2. Если не поможет - используй подзапрос: SELECT pricelist.partnumber,pricelist.baseval, (select name from exchlist e where e.numb=pricelist.exchnumb) as name FROM oemprice WHERE pricelist.partoem=2040 ORDER BY partnumber ROWS 20 Такое сильно помогает в ФБ. Если в ИБ это не поможет - выкинь. Да и без этого тоже выкинуть не грех :-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2003, 19:48 |
|
Странности планировщика запросов IB. Поможите, плз!
|
|||
---|---|---|---|
#18+
Кажись, помогает!! Спасибо, Gold! Вельми понеже, весьма Вами благодарен :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2003, 09:22 |
|
Странности планировщика запросов IB. Поможите, плз!
|
|||
---|---|---|---|
#18+
Блин! Поторопился я со своей радостью (см. нить по оптимизатору IB для таблицы в 250000 строк). Строки в результате запроса выводятся достаточно быстро, но они НЕ упорядочены по нужному мне полю. Хотя используется индекс, в котором это поле указано. Короче, странно все это... Люди, подскажите: в Yaffil'e те же проблемы? BTW, IB Expert в Дятле работает ? Или какой-нить аналогичный по "лошадиным силам" инструмент для него есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2003, 08:26 |
|
|
start [/forum/topic.php?fid=40&msg=32117946&tid=1580771]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 299ms |
total: | 415ms |
0 / 0 |