powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Странности планировщика запросов IB. Поможите, плз!
6 сообщений из 6, страница 1 из 1
Странности планировщика запросов IB. Поможите, плз!
    #32117779
p519446
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем <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 ?
...
Рейтинг: 0 / 0
Странности планировщика запросов IB. Поможите, плз!
    #32117783
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У IB и его клонов оптимизатор, конечно, так себе, но у самого ИБ он уж точно хуже, чем у дятла и ФБ. А на вопрос сам себе ответь, посмотрев план.
...
Рейтинг: 0 / 0
Странности планировщика запросов IB. Поможите, плз!
    #32117789
p519446
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в первом запросе план такой:
PLAN JOIN ( PARTPRICE(INDEX.....), EXCHLIST(...)),

а во втором такой:
PLAN SORT (JOIN (PARTPRICE(INDEX.....), EXCHLIST(...)) )

Что означает вмешательство слова "SORT"?
ГДЕ и КОГДА отрабатывает этот SORT, до или после получения выборки-результата? Мне лично кажется, что ДО!
...
Рейтинг: 0 / 0
Странности планировщика запросов IB. Поможите, плз!
    #32117796
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я по планам не спец, но логично предположить, что они изнутри наружу выполнятся, т.е. 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
Такое сильно помогает в ФБ. Если в ИБ это не поможет - выкинь. Да и без этого тоже выкинуть не грех :-))
...
Рейтинг: 0 / 0
Странности планировщика запросов IB. Поможите, плз!
    #32117946
p519446
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажись, помогает!! Спасибо, Gold! Вельми понеже, весьма Вами благодарен :)
...
Рейтинг: 0 / 0
Странности планировщика запросов IB. Поможите, плз!
    #32119806
p519446
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин! Поторопился я со своей радостью (см. нить по оптимизатору IB для таблицы в 250000 строк).
Строки в результате запроса выводятся достаточно быстро, но они НЕ упорядочены по нужному мне полю. Хотя используется индекс, в котором это поле указано.
Короче, странно все это...

Люди, подскажите: в Yaffil'e те же проблемы?
BTW, IB Expert в Дятле работает ? Или какой-нить аналогичный по "лошадиным силам" инструмент для него есть?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Странности планировщика запросов IB. Поможите, плз!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]