172 похожих чатов

Привет всем, есть немного глупый теоретический вопрос На вход на бэкенд

(вне базы) прилетает сет айдишников которые надо проверить на наличие в базе

Я могу сделать это одним запросом, который будет делать что-то вроде select * from UNNEST(ARRAY[*прилетевшие ко мне идентификаторы*]) потом заджоиниться на нужную таблицу левым джоином и выдать результат, так я успешно получу какие айдишники из присланного сета в таблице есть, а каких нет

Но исходный сет айдишников может быть "условно" большим (допустим 10к записей) и вместо одного запроса в базу данных можно послать несколько параллельных запросов

Я бы, конечно, послал один большой, но может ли несколько параллельных запросов быть быстрее в таком случае? Извиняюсь за то что очень пространно спрашиваю

8 ответов

18 просмотров

10к это не много

Egor-Gusarenko Автор вопроса
Alexey Bulgakov
10к это не много

Да, поэтому и вопрос скорее теоретический, в плане много ли это в рамках сгенерированого запроса, т е это банально прорва текста

"SELECT id FROM table WHERE id IN (" . join(", ", map { $dbh->quote($_) } @ids) . ")" Пока количество id меньше 10К это будет быстрее чем джойнить. Так народ занимается микрооптимизациями.

а сам планировщик не догадается распаралелить?

Egor Gusarenko
Да, поэтому и вопрос скорее теоретический, в плане...

сделайте стресс тест, что бы определить границы коллекции и дальше limit

Egor-Gusarenko Автор вопроса
central hardware
а сам планировщик не догадается распаралелить?

Конечно догадается, но тут глупый вопрос будет ли сильно хуже вариант с несколькими параллельными запросами

Egor-Gusarenko Автор вопроса
Warstone
"SELECT id FROM table WHERE id IN (" . join(", ", ...

Выглядит круто, спасибо!

Стратегии тут по существу две: либо использовать индекс, либо нет (делать последовательный поиск и проверять ID-шник на присутствие в заданном множестве). JOIN с использованием nested loop - это разновидность первой стратегии. А вот HASH JOIN - второй. IN clause может как использовать index merge, так и последовательный поиск. Что выгоднее зависит от размеров таблички и множества ID-шиков. А также размера записи (соотношение размера таблички и индекса). Последовательный поиск постгрес ещё умеет параллелить...

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта