powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как обойти конструкцию IN?
9 сообщений из 9, страница 1 из 1
Как обойти конструкцию IN?
    #39188235
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю, давно известная проблема, но решения найти не могу. FB2.1. Упрощённый запрос:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
select a.id_fac
from factor a
where a.id_comp in ( select m.id_mdl
                     from relgr r
                                inner join modul m on m.id_mdl=r.id_cmdl
                     where r.priz_gr is null and r.id_mdl=900415
                   )
order by a.id_fac


В этом случае идёт просмотр всей таблицы. Если вместо второго Select'а поставить явные значения, то всё в порядке, просмотр по индексу.
Есть решение? Может в более новых версиях?
...
Рейтинг: 0 / 0
Как обойти конструкцию IN?
    #39188251
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JOIN + DISTINCT или EXECUTE BLOCK.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как обойти конструкцию IN?
    #39188258
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос - хрень
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как обойти конструкцию IN?
    #39188300
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чем
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select distinct
    f.id_fac
from
    factor f
    inner join modul m on f.id_comp = m.id_mdl
    inner join reglr r on m.id_mdl = r.id_cmdl
where 
    r.priz_gr is null
    and r.id_id_mdl = 900415
order by a.id_fac


не подходит?
...
Рейтинг: 0 / 0
Как обойти конструкцию IN?
    #39188387
Фотография PEAKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как обойти конструкцию IN?
    #39188444
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PEAKTOP Отбор множества записей по ключам из другой таблицы (обход конструкции IN)
Это не работает, первым делом попробовал.
JOIN + DISTINCT работает. Не хотелось связывать (хотелось только фильтр наложить), но, видимо, придётся.
...
Рейтинг: 0 / 0
Как обойти конструкцию IN?
    #39188502
Фотография PEAKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIPEAKTOP Отбор множества записей по ключам из другой таблицы (обход конструкции IN)

И с каких пор работа клиентского приложения для Firebird с таблицей или с хранимой процедурой отличается?
...
Рейтинг: 0 / 0
Как обойти конструкцию IN?
    #39188644
MikeDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select a.id_fac
 from factor a
 join (
  select m.id_mdl
   from relgr r
   inner join modul m on m.id_mdl=r.id_cmdl
   where r.priz_gr is null and r.id_mdl=900415
 ) s on s.id_mdl=a.id_comp
 order by a.id_fac
...
Рейтинг: 0 / 0
Как обойти конструкцию IN?
    #39188849
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikeDD, спасибо! Похоже, то что надо. Супер!

PEAKTOPKreatorXXIпропущено...


И с каких пор работа клиентского приложения для Firebird с таблицей или с хранимой процедурой отличается?
Я имел ввиду, что использование "~" (тильд) всё равно приводит к перебору всех записей таблицы. А нужно отобрать используя индекс.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как обойти конструкцию IN?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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