powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Exists по двум или более таблицам
25 сообщений из 108, страница 2 из 5
Exists по двум или более таблицам
    #39521711
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Чуть исправил, в exists вместо on поставил where. План:
авторПлан
PLAN (C INDEX (DEFECT_IDX1))
PLAN JOIN (B NATURAL, A INDEX (PK_MODUL))

Может как-то не через select?
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521712
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, какие объёмы данных (сейчас и ожидаемые) ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521716
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

ошибся мальца.
На план не смотри если не понимаешь скорость по сравнению с другими вариантами устраивает?
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521721
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

тьфу. Этот запрос тоже не правильный. Короче либо вариант с DISTINCT либо изначальный EXISTS
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521743
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> скорость по сравнению с другими вариантами устраивает?

Так он и скорость щас оценить не может, если у него
самая большая (в будущем) таблица пока пустая.
Надо на количество фетчей смотреть, если он умеет.

P.S. Нет никаких вариантов без DISTINCTа, равносильных
первоначальному по результату - ни рабоче-крестьянских,
ни дворянско-аристократических.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521746
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

есть, но я сомневаюсь что они будут лучше
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521777
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> есть

?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521778
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ты про всякие переборы вручную. Несерьёзно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521782
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисГаджимурадов Рустам,

есть, но я сомневаюсь что они будут лучшеCount(), HEAVING ?
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521789
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HEAVING звучит замечательно, но это тот же
дистинкт, только в профиль. И ничем не лучше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521792
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамP.S. Нет никаких вариантов без DISTINCTа, равносильных
первоначальному по результату - ни рабоче-крестьянских,
ни дворянско-аристократических.

Ну как нет? Попробуйте мне объяснить. Есть таблица modul, у каждой записи таблицы modul может быть до 30 дочерних записей в umass. У каждой записи umass может быть до 100 записей в defect. В modul записей почти миллион, в umass хорошо за два миллиона, в дефект пока чуть меньше ста тысяч. Мне нужны записи в modul, где есть дочерние записи в defect. Записи в таблице defect более-менее равномерно размазаны по umass. Т.е. по моей человеческой логике вероятность нарваться на запись в defect велика, и сканирование по umass большого числа записей не должно быть. Вот как мне получить результат? Вообще мне кажется и схема данных нормальная, и хотелка тоже нужная.
Я вообще хотел ещё верхний уровень приклеить. Но пока нет.
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521795
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

ну например

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t as (
  select b.id_mdl
  from umass b
    join defect c on c.id_ums=b.id_ums
  group by b.id_mdl
)
select a.sn_mdl
from modul a
left join t on t.id_mdl = a.id_mdl
where t.id_mdl is not null
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521826
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI, можно пойти от обратного - если записи в defect существуют только для modul через umass, то тебе надо лишь выбрать из defect единичные (DISTINCT) id_ums и по натуралу привязать к выборке сначала umass, а затем modul.
Как-то так:
Код: sql
1.
2.
3.
4.
5.
SELECT m.id_mdl
  FROM (SELECT DISTINCT id_ums FROM defect) d
    INNER JOIN umass um ON um.id_ums = d.id_ums
    INNER JOIN modul m ON m.id_mdl = um.id_mdl
  PLAN JOIN(JOIN(JOIN(d NATURAL), um INDEX(pk_umass)), m INDEX(pk_modul))

Попробуй, вдруг повезет! :)
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521830
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI> в дефект пока чуть меньше ста тысяч

А будет сколько и когда?
Сколько из modul должно выбраться в итоге (в процентах)?
И какие есть (если есть) доп.фильтры по каждой из таблиц.

Из того, что ты пока рассказал - оставь изначальный вариант.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521832
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> group by b.id_mdl

Я ж говорю, профиль Фаберже.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521834
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIПланPLAN (C INDEX (DEFECT_IDX1))
PLAN JOIN (B NATURAL, A INDEX (PK_MODUL))

Может как-то не через select?
При соотношении modul и umass 1:3 вполне нормальный вариант.
Или всё же планируешь до 1:20 довести?
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521835
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev> Iiigiaoe, aagoa iiaacao! :)

Замечательный подход к разработке.
Ламером был - ламером и помрёшь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521837
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery> При соотношении modul и umass 1:3 вполне нормальный вариант.
> Или всё же планируешь до 1:20 довести?

Там 1-30-100. Не вариант справа налево.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521838
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devПопробуй, вдруг повезет! :)Хороший совет, собирать дистинкт по всей таблице с планируемым объёмом более 100 миллионов записей.
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521840
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIГаджимурадов РустамP.S. Нет никаких вариантов без DISTINCTа, равносильных
первоначальному по результату - ни рабоче-крестьянских,
ни дворянско-аристократических.

Ну как нет? Попробуйте мне объяснить. Есть таблица modul, у каждой записи таблицы modul может быть до 30 дочерних записей в umass. У каждой записи umass может быть до 100 записей в defect. В modul записей почти миллион, в umass хорошо за два миллиона, в дефект пока чуть меньше ста тысяч. Мне нужны записи в modul, где есть дочерние записи в defect. Записи в таблице defect более-менее равномерно размазаны по umass. Т.е. по моей человеческой логике вероятность нарваться на запись в defect велика, и сканирование по umass большого числа записей не должно быть. Вот как мне получить результат? Вообще мне кажется и схема данных нормальная, и хотелка тоже нужная.
Я вообще хотел ещё верхний уровень приклеить. Но пока нет.

Ну так разверни джойн при помощи заклинаний +0 так, чтобы перебор начинался с дефектов. Но когда/если их таблица распухнет до безобразия, это встанет колом.
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521842
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТам 1-30-100. Не вариант справа налево.Рустам, пусть автор ответит.
Это максимально плохое соотношение. Но пока из его речи следует, что только таблица дефектов не наполнена, остальные, значит, в более-менее рабочем состоянии, и текущее соотношение 1:3
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521851
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery> и текущее соотношение 1:3

Гм... Ты предлагаешь переписывать запрос позже или что?

P.S. Повторюсь в третий раз - надо танцевать от доп.фильтров.
Наверняка они есть, не может быть регулярная выборка ляма
записей мастера с мульти-лямами деталей без доп.фильтров.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521862
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамrdb_dev> Iiigiaoe, aagoa iiaacao! :)

Замечательный подход к разработке.
Ламером был - ламером и помрёшь.
И это вещает человек, не знакомый с теорией множеств и откуда взялся JOIN в SQL?
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521867
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryrdb_devПопробуй, вдруг повезет! :)Хороший совет, собирать дистинкт по всей таблице с планируемым объёмом более 100 миллионов записей.Хочешь сказать, что DISTINCT не способен к отбору по индексу, в частности по FK к umass?
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39521873
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev> Хочешь сказать, что DISTINCT не способен к отбору по индексу

Это какой-то феерический песец...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 108, страница 2 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Exists по двум или более таблицам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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