powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды, Поиск: Сообщение содержит вложения  
8 сообщений из 8, страница 1 из 1
MySQL / Господа базоёбы, скок сюды
    #58488
basename
Скрыть профиль Поместить в игнор-лист
Участник
Я почти ничего в SQL не понимаю, не, конечно, select * на табличку сделать могу, но что-то большее - увы, когда-то что-то тыркал, но очень давно, мне это в работе не требуется.

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

Я открыл доку, почитал, https://dev.mysql.com/doc/refman/8.0/en/

Вроде бы получился такой запрос
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
use NOSQL;
select v1_post.id, v1_post.user_id, v1_post.author, v1_topic.forum_id, v1_post.topic_id, v1_attachment.name
from v1_post
left join v1_attachment
on v1_post.id = v1_attachment.post_id
left join v1_topic
on v1_post.topic_id = v1_topic.id
where v1_post.user_id = '173' and v1_attachment.name is not null;
Вопрос, насколько он хуёвый и чего я не учёл?

Почему спрашиваю, вначале у меня какие-то дубли получались, однако если ебануть distinct, дубли удалялись. Но я так понимаю, если в запросе прибегнул к дистинкту - это плохо? Или нет?

В общем, я внимательно ещё раз посмотрел что к чему присобачивается, вроде бы всё норм. и количетсво строк - то, что и из таблички с вложениями.

На первой картинке просто количество вложений из таблички вложений, на второй табличка - которая меня интересует
pasted_image.png
pasted_image.png
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60151
basename
Скрыть профиль Поместить в игнор-лист
Участник
basename  07.06.2022, 19:34
[игнорируется]
Я почти ничего в SQL не понимаю, не, конечно, select * на табличку сделать могу, но что-то большее - увы, когда-то что-то тыркал, но очень давно, мне это в работе не требуется.

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

Я открыл доку, почитал, https://dev.mysql.com/doc/refman/8.0/en/

Вроде бы получился такой запрос
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
use NOSQL;
select v1_post.id, v1_post.user_id, v1_post.author, v1_topic.forum_id, v1_post.topic_id, v1_attachment.name
from v1_post
left join v1_attachment
on v1_post.id = v1_attachment.post_id
left join v1_topic
on v1_post.topic_id = v1_topic.id
where v1_post.user_id = '173' and v1_attachment.name is not null;
Вопрос, насколько он хуёвый и чего я не учёл?

Почему спрашиваю, вначале у меня какие-то дубли получались, однако если ебануть distinct, дубли удалялись. Но я так понимаю, если в запросе прибегнул к дистинкту - это плохо? Или нет?

В общем, я внимательно ещё раз посмотрел что к чему присобачивается, вроде бы всё норм. и количетсво строк - то, что и из таблички с вложениями.

На первой картинке просто количество вложений из таблички вложений, на второй табличка - которая меня интересует
pasted_image.png
pasted_image.png
Вот так будет если убрать not null (ну это очевидно и так)
pasted_image.png
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60157
basename
Скрыть профиль Поместить в игнор-лист
Участник
cat2  07.06.2022, 19:41
[игнорируется]
left join не нужен.
Просто JOIN.

И тогда не нужно будет и условие and v1_attachment.name is not null;. Такие записи сами отсекутся при выполнении on v1_post.id = v1_attachment.post_id
да просто c join отработакло так, как сказал кот
pasted_image.png
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60194
basename
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  07.06.2022, 19:59
[игнорируется]
basename, планы давай
На первой картинке для моего сабжевого запроса

на второй с простым join
pasted_image.png
pasted_image.png
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60272
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
basename  09.06.2022, 15:56
[игнорируется]
W [игнорируется] 

Я вот всё-таки не пойму, ты Пашэ или не Пашэ? ))
У меня в игноре только Пошэгеи, пидарасы и саентологи.
Screenshot_2022-06-09-15-57-40-323_com.opera.browser.jpg
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60321
basename
Скрыть профиль Поместить в игнор-лист
Участник
Горбатый ёж  09.06.2022, 16:29
[игнорируется]
basename  09.06.2022, 16:29
[игнорируется]
Горбатый ёж  09.06.2022, 16:28
[игнорируется]
Хуяссе планы...
что с ними не так? )
А есть текстовый вариант?
В тектовом виде такое.

Оно? или что должно быть?
pasted_image.png
pasted_image.png
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60358
basename
Скрыть профиль Поместить в игнор-лист
Участник
cat2  09.06.2022, 17:11
[игнорируется]
basename  09.06.2022, 16:54
[игнорируется]
basename  09.06.2022, 16:44
[игнорируется]
Горбатый ёж [игнорируется] 

Вот ещё вывод explain analyze

Как только в читабельном виде отобразить...

join
Цитата 
[игнорируется]
'-> Nested loop inner join (cost=473.95 rows=424) (actual time=0.235..3.066 rows=197 loops=1)\n -> Nested loop inner join (cost=325.38 rows=369) (actual time=0.154..1.790 rows=369 loops=1)\n -> Index lookup on v1_post using v1_post_user_id_idx (user_id=173) (cost=196.23 rows=369) (actual time=0.144..1.183 rows=369 loops=1)\n -> Single-row index lookup on v1_topic using PRIMARY (id=v1_post.topic_id) (cost=0.25 rows=1) (actual time=0.001..0.001 rows=1 loops=369)\n -> Index lookup on v1_attachment using v1_attachment_unq (post_id=v1_post.id) (cost=0.29 rows=1) (actual time=0.003..0.003 rows=1 loops=369)\n'
left join
Цитата 
[игнорируется]
'-> Nested loop left join (cost=419.06 rows=212) (actual time=0.137..2.520 rows=197 loops=1)\n -> Nested loop inner join (cost=344.79 rows=212) (actual time=0.130..1.888 rows=197 loops=1)\n -> Index lookup on v1_post using v1_post_user_id_idx (user_id=173) (cost=196.21 rows=369) (actual time=0.093..0.869 rows=369 loops=1)\n -> Filter: (v1_attachment.`name` is not null) (cost=0.29 rows=1) (actual time=0.002..0.003 rows=1 loops=369)\n -> Index lookup on v1_attachment using v1_attachment_unq (post_id=v1_post.id) (cost=0.29 rows=1) (actual time=0.002..0.002 rows=1 loops=369)\n -> Single-row index lookup on v1_topic using PRIMARY (id=v1_post.topic_id) (cost=0.25 rows=1) (actual time=0.003..0.003 rows=1 loops=197)\n'
Господа, но вот видно тут, что left join выполняется быстрее почти в два раза!!!!!
Когда ты показывал план для INNER в виде таблицы, то он был другим
Вот. Цифры по времени выполнения немножко другие опять, но тем не менее
pasted_image.png
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60379
basename
Скрыть профиль Поместить в игнор-лист
Участник
Просто Трёп  09.06.2022, 17:54
[игнорируется]
Мне другое интересно. У деды что, каждый пост три раза хранится? Просто, хтмл и серчабле?
ну исходя из записей - да
pasted_image.png
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды, Поиск: Сообщение содержит вложения  
Читали тему (2): Анонимы (1), Yandex Bot 1 мин.
Игнорируют тему (1): erbol
Читали форум (2): Анонимы (1), Yandex Bot 1 мин.
Пользователи онлайн (29): Barkrowler, Анонимы (13), prostozevs, Yandex Bot, s62, Green, XEugene, Tabula Rasa 1 мин., Bing Bot 2 мин., Т-Миронов 3 мин., Redd 3 мин., zNomad 3 мин., паразит 4 мин., Google Bot 5 мин., Шоколадный01 6 мин., Sparrow 6 мин., IT-Клоп 6 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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