powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Максимальные номера из нескольких таблиц
6 сообщений из 6, страница 1 из 1
Максимальные номера из нескольких таблиц
    #32174752
ant2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никогда раньше, не приходилось использовать функции Max, Min из нескольких таблиц. А теперь получаю следующее:

Select Max(Base1.Number), Min(Base1.Number), Max(Base2.Number), Min(Base2.Number) from Base1, Base2

В результате получаю жуткие тормоза в выполнении запроса (порядка 20 сек. на таблицах, в каждой из которых около 1 тыс. записей).

Подскажите, что не так?
Да, надо чтобы результат был одной строкой.
...
Рейтинг: 0 / 0
Максимальные номера из нескольких таблиц
    #32174781
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется, когда делается join как у тебя, получается таблица из 1000*1000 = миллион строк.
Почему тормозит не знаю. В книжке написано, что если сортировать по убыванию, надо и индекс делать по убыванию (хотя вот например, MySQL умеет при сортировке по убыванию пользоваться индексом по возрастанию (кажись)). Может, если искать Max, то тоже надо делать индекс по убыванию, а для поиска Min - еще один по возрастанию?
Это подскажут знатоки, а я спрошу, есть ли индексы вообще?
...
Рейтинг: 0 / 0
Максимальные номера из нескольких таблиц
    #32174795
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно мыслит гражданин feed :-))))
Индексы в ИБ однонаправленные -> для минимума нужен индекс по возрастанию, для максимума - по убыванию.
Твой запрос - декартово произведение, т.е. правильно тебе написали - 1000000 записей да ещё и несколько раз перебирается.
могу посоветовать только подзапросы:

select
(select Max(Number) from base1),
(select Min(Number) from base1),
(select Max(Number) from base2),
(select Min(Number) from base2)
from rdb$database
...
Рейтинг: 0 / 0
Максимальные номера из нескольких таблиц
    #32174889
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не feed, я fedd! :)
Вот думаю, помогу кому-нибудь, может и мне помогут...
...
Рейтинг: 0 / 0
Максимальные номера из нескольких таблиц
    #32174899
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, извини, описался :-)))
...
Рейтинг: 0 / 0
Максимальные номера из нескольких таблиц
    #32175136
ant2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже, что действительно идет перемножение записей. Посмотрел анализ производительности и увидел порядка выбранных 300 тыс. записей из второй таблицы. Причем все записи выбираются без использования индекса. Наличие или отсутствие индекса на поле Number почему-то на производительности не сказывается :(.
2: Gold
За подсказку с использованием rdb$database спасибо, все работает на ура!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Максимальные номера из нескольких таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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