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

Привет всем. Есть такой запрос: SELECT match_id, user_id FROM match_users

JOIN matches USING match_id WHERE match_id = 321. Можно ли заставить кликхаус не выгружать всю таблицу в память, а отдельными запросами получить только нужную запись из matches?

P. S. Предполагается, что в match_users при выборке с match_id количество записей будет не больше 5

12 ответов

7 просмотров

А пробывал джойнить запрос ?

МСМК- Автор вопроса
Константин
А пробывал джойнить запрос ?

а-ля SELECT match_id, user_id FROM match_users JOIN (SELECT * FROM matches WHERE matches.match_id = match_users.match_id) WHERE match_id = 321?

МСМК
а-ля SELECT match_id, user_id FROM match_users JOI...

Ну если тебе нужен 321, то ты можешь matches.match_id =321

МСМК- Автор вопроса
Константин
Ну если тебе нужен 321, то ты можешь matches.match...

В данном случае мне действительно нужен только 321. Но есть ситуации, когда нужен подобный запрос: SELECT match_id, user_id FROM match_users JOIN matches USING match_id WHERE user_id = 1 и тогда уже начинаются проблемы

МСМК- Автор вопроса
МСМК
В данном случае мне действительно нужен только 321...

Проблемы такого рода, что при выборке по match_users.user_id в основном не более 1000 записей и быстрее их кодом в цикле обойти и получить отдельно каждый matches.match_id, чем дожидаться пока кликхаус join выполнит

МСМК
В данном случае мне действительно нужен только 321...

Я бы сказал, что тогда у вас схема хранения не правильная. https://www.youtube.com/watch?v=y8HsXqQEyfE , не помню на какой минуте, но требуется денормализация данных если вы храните их как таблицы. Если таблица не большая, то можно попробывать словарь для неё сделать.

МСМК- Автор вопроса
Константин
Я бы сказал, что тогда у вас схема хранения не пра...

Спасибо, ознакомлюсь. Проблема как раз в том, что таблица уже достаточно большая (около 400 гигабайт) и выгружать её в оперативку для такого запрос дорого и долго

МСМК
Спасибо, ознакомлюсь. Проблема как раз в том, что ...

Ну так она же не полностью выгружается, а только требуемые столбцы.

МСМК- Автор вопроса
Константин
Ну так она же не полностью выгружается, а только т...

Шутка в том, что выгружается почти полностью. Когда планировал архитектуру я ожидал, что JOIN'ы будут работать примерно таким образом: SELECT * FROM matches WHERE match_id IN (SELECT match_id FROM match_users WHERE user_id = 1) но получилось необычно)) так что буду копать, спасибо

МСМК
Шутка в том, что выгружается почти полностью. Когд...

А в чём проблема сделать из этого запроса JOIN ? Тестили IN vs JOIN на больших запросах, получили что IN вообще не выполняется :)

МСМК- Автор вопроса
Константин
А в чём проблема сделать из этого запроса JOIN ? Т...

Да вот в том и проблема, что IN выполняется за 1 секунду, а JOIN на более мощном сервере с необходимым объёмом оперативки для выгрузки таблицы выполняется 250 секунд

МСМК
Шутка в том, что выгружается почти полностью. Когд...

вот так и надо делать - без джойнов, но на подзапросах. Почему медленно - смотрите order by таблиц. Для match_users первым должен быть user_id

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

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

А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Доброе время суток! у меня тут иноды закончились. и понял почему по сути кстит, я периодически очищаю постгрес и сентри контайнер: postgres=# DELETE FROM nodestore_node WHER...
Юсиф Насиров
9
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Карта сайта