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

Всем привет, подскажите, есть 3 таблицы: "новости", "теги"

и связующая таблица, как оптимальнее хранить это для поиска новостей с определенным тегом? оставить many-to-many, или денормализовать и хранить массив тегов для каждой новости?

18 ответов

14 просмотров

Many to many, связующая таблица

Тигран-Мурадян Автор вопроса
Ilya Zviagin
Many to many, связующая таблица

спасибо, а если скажем будет условий больше чем 1 - по тегам, например select * from news where id in (select id from tag_news where tag_id=x) and condition_2 = y and condition_3=z limit 100, будет ли такой запрос оптимален?

Тигран Мурадян
спасибо, а если скажем будет условий больше чем 1 ...

Такой запрос будет неправильным в первую очередь

Тигран-Мурадян Автор вопроса
Ilya Zviagin
Такой запрос будет неправильным в первую очередь

вы имеете в виду использовать join вместо IN?

Тигран Мурадян
вы имеете в виду использовать join вместо IN?

Я ничего не имею в виду в данном случае, просто говорю, что запрос у тебя неверный

Тигран Мурадян
вы имеете в виду использовать join вместо IN?

Не ну и давай на ты, что выкать то? Тут все друзья

Тигран-Мурадян Автор вопроса
Ilya Zviagin
Не ну и давай на ты, что выкать то? Тут все друзья

поправил select * from news where id in (select news_id from tag_news where tag_id=x) and condition_2 = y and condition_3=z limit 100

Тигран Мурадян
поправил select * from news where id in (select ne...

Тигран. Давай так. Формулировка задания, DDL , запрос — вопрос.

Тигран Мурадян
поправил select * from news where id in (select ne...

Вот это вот например — ЭТО ЧТО? and condition_2 = y and condition_3=z Явно это не валидный запрос.

Тигран-Мурадян Автор вопроса
Ilya Zviagin
Вот это вот например — ЭТО ЧТО? and condition_2 =...

Cорри что ввел в заблуждение, структура примерно следующая: create table news ( id int unsigned auto_increment primary key, created_on datetime not null, main_image varchar(200) not null, category_id int unsigned not null ); create table tags ( id int unsigned auto_increment primary key, name varchar(200) not null ); create table tags_news ( id int unsigned auto_increment primary key, news_id int unsigned not null, tags_id int unsigned not null ); query: SELECT * FROM news WHERE id in (SELECT news_id from tags_news where tags_id = 10) and category_id = 4 limit 100 Вопрос: не оптимальнее ли, при большом кол-ве новостей и связей с тегами (самих тегов около 100), хранить в news колонку tags integer[] , c целью последующей ее индексации

Тигран Мурадян
Cорри что ввел в заблуждение, структура примерно с...

Расскажи, как собираешься хранить в news колонку tags integer[] и при этом индексацировать её?

Тигран Мурадян
Cорри что ввел в заблуждение, структура примерно с...

Вопрос: не оптимальнее ли, при большом кол-ве новостей и связей с тегами — нет, не оптимальнее

Ilya Zviagin
Расскажи, как собираешься хранить в news колонку ...

наверное это имелось в виду, create index tags_ids_idx on news using GIN (tags gin__int_ops); и использовать вместо подзапроса WHERE tags @> ARRAY[10];

Тигран Мурадян
Cорри что ввел в заблуждение, структура примерно с...

Некоторые (в т.ч. и здесь было, если не путаю) пишут, что с использованием tags integer[] и индексацией запросы получаются быстрее. Но лично я не пробовал / repro не видел, если что.

Михаил
наверное это имелось в виду, create index tags_ids...

Ну, это да, так можно... Но это только -ВОЛШЕБНЫЙ Postgress!

шел 2020 год, а все про одно и тоже. поищи мой доклад про это по словам токарев facetted seach highload

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
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
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта