powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выборка значений из большой таблицы
6 сообщений из 31, страница 2 из 2
Выборка значений из большой таблицы
    #38655258
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shaman2m7mShaman2,

оставаясь в "стиле" исходного запроса то как-то вот так
Код: sql
1.
2.
3.
4.
5.
6.
select * from products
right join
(select distinct id_product from product_w ps
  join product_words pw_1 on pw_1.id_product_word=ps.id_product_word and pw_1.name starting with 'масло'
  join product_words pw_2 on pw_2.id_product_word=ps.id_product_word and pw_2.name starting with 'сливочное'
) t on products.id_product=t.id_product



неработает. вообще не находит
запрос туп до безобразия, а я наверное еще тупеее
ибо не вижу причин
...
Рейтинг: 0 / 0
Выборка значений из большой таблицы
    #38655264
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,
мдя, ночью спать надо, а утром просыпаться
...
Рейтинг: 0 / 0
Выборка значений из большой таблицы
    #38655364
Shaman2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyShaman2оказываются в базе есть масло2648, масло1648при вставке в словарь проверять не уникальность, а факт того, что вновь вставляемое слово является началом уже имеющегося и не вставлять. промахов станет немного меньше.

а какое тогда условие проверки при вставке и при поиске?
...
Рейтинг: 0 / 0
Выборка значений из большой таблицы
    #38655394
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shaman2а какое тогда условие проверки при вставке not exists(select 1 from ... starting with ...)

Shaman2при поискепоиск не меняется.
...
Рейтинг: 0 / 0
Выборка значений из большой таблицы
    #38655734
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shaman2E.S1.
At line 36, column 31.

Column unknown.
R.K.
At line 69, column 1.Это ошибки в рекурсивном запросе, во вспомогат. процедуре. Возможно, у вас старая версия ФБ, я делал на LI-V2.5.3.26744
...
Рейтинг: 0 / 0
Выборка значений из большой таблицы
    #38655962
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shaman2если это все заработает на больших обьемахПоменяйте в ХП PROD_BY_PATTERNS выборку на вот эту:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
       with
        inp_arg as(
          select p.word as pattern, p.i
          from split_into_words( :a_pattern ) p
        )
        ,inp_pat  as(
          select
            i.pattern, i.i
            ,(select count(distinct pattern) from inp_arg) cnt_unq
            ,(select count(*) from inp_arg x where x.pattern=i.pattern ) cnt_occ
          from inp_arg i
        )
        --with inp_pat as(select 'qwe' pattern, 0 i, 1 cnt_unq, 1 cnt_occ from rdb$database)
        ,prod_pat as(
            select --pp.prod_id, i.pattern, i.i, i.cnt_all, i.cnt_occ, pw.id pw_id, pw.name pw_word, ps.name
            pp.prod_id
            ,i.pattern
            ,max(i.cnt_unq) cnt_unq
            ,max(i.cnt_occ) cnt_occ
            from inp_pat i
             INNER  join pwords pw on pw.name starting with i.pattern
             INNER  join prod_w pp on pw.id = pp.word_id
            group by pp.prod_id, i.pattern
            having count(distinct pw.id) >= max(i.cnt_occ)
        )
        -- select * from  prod_pat

        ,prod_fin as (
            select pp.prod_id
            from prod_pat pp
            group by pp.prod_id
            having count(*) = max(cnt_unq)
        )
        select pf.prod_id, ps.name
        from prod_fin pf
        join prod ps on pf.prod_id = ps.id
Должно будет работать в разы быстрее первого варианта.
Я проверял на скрипте, в котором "продуктами" являются запчасти одной известной марки. Там несколько десятков тыс. строк, задержек не нашёл.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выборка значений из большой таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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