powered by simpleCommunicator - 2.0.31     © 2024 Programmizd 02
Форумы / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды
25 сообщений из 242, страница 8 из 10
Господа базоёбы, скок сюды
    #60350
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 выполняется быстрее почти в два раза!!!!!
Я вот интуитивно чувствую, возможно в этом дело, получается основная таблица post, но в ней нет данных по аттачменту. У поста аттачменты могут быть, а могут и не быть. Когда оно клеит две таблицы, оно доавляет поле и где аттачмента нет, хуячит туда нуль. А в случае join ему нужно отсчеь вообще всё ненужное. Может быть дело в этом.

Короче, я хз
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60351
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 в виде таблицы, то он был другим
щас тебе сделаю в момент времени.

второй запрос это просто explain analyze. Без представления графической оболочки

https://dev.mysql.com/blog-archive/mysql-explain-analyze/#:~:text=What is it?,points in the execution plan.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60363
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Гесты и игнорируемые идут по CSS
basename  09.06.2022, 17:13
[игнорируется]
Короче, я хз
Я тоже. Я не знаток MySQL и мне непонятно почему про INNER одна из таблиц сканируется два раза

Ради интереса, попробуй такие варианты
Код: 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
join v1_topic
on v1_post.topic_id = v1_topic.id
left join v1_attachment
on v1_post.id = v1_attachment.post_id
where v1_post.user_id = '173' and v1_attachment.name is not null;
Код: 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
join v1_topic
on v1_post.topic_id = v1_topic.id
join v1_attachment
on v1_post.id = v1_attachment.post_id
where v1_post.user_id = '173'
Код: SQL
1.
2.
3.
4.
5.
6.
7.
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
join v1_topic
on v1_post.topic_id = v1_topic.id and v1_post.user_id = '173'
join v1_attachment
on v1_post.id = v1_attachment.post_id
Код: SQL
1.
2.
3.
4.
5.
6.
7.
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_topic
join v1_post
on v1_post.topic_id = v1_topic.id and v1_post.user_id = '173'
join v1_attachment
on v1_post.id = v1_attachment.post_id
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60367
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat2  09.06.2022, 17:32
[игнорируется]
Код: SQL
1.
2.
3.
4.
5.
6.
7.
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_topic
join v1_post
on v1_post.topic_id = v1_topic.id and v1_post.user_id = '173'
join v1_attachment
on v1_post.id = v1_attachment.post_id
Код
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
mysql> use NOSQL;
Database changed
mysql> explain analyze 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
    -> join v1_topic
    -> on v1_post.topic_id = v1_topic.id
    -> left join v1_attachment
    -> on v1_post.id = v1_attachment.post_id
    -> where v1_post.user_id = '173' and v1_attachment.name is not null;
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPLAIN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| -> Nested loop inner join  (cost=418.90 rows=212) (actual time=0.162..2.585 rows=197 loops=1)
    -> Nested loop inner join  (cost=344.62 rows=212) (actual time=0.152..2.288 rows=197 loops=1)
        -> Index lookup on v1_post using v1_post_user_id_idx (user_id=173)  (cost=196.05 rows=369) (actual time=0.106..1.106 rows=369 loops=1)
        -> Filter: (v1_attachment.`name` is not null)  (cost=0.29 rows=1) (actual time=0.003..0.003 rows=1 loops=369)
            -> Index lookup on v1_attachment using v1_attachment_unq (post_id=v1_post.id)  (cost=0.29 rows=1) (actual time=0.002..0.003 rows=1 loops=369)
    -> 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=197)
 |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

mysql>
mysql> use NOSQL;
Database changed
mysql> explain analyze 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
    -> join v1_topic
    -> on v1_post.topic_id = v1_topic.id
    -> join v1_attachment
    -> on v1_post.id = v1_attachment.post_id
    -> where v1_post.user_id = '173';
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPLAIN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| -> Nested loop inner join  (cost=473.77 rows=424) (actual time=0.107..2.315 rows=197 loops=1)
    -> Nested loop inner join  (cost=325.20 rows=369) (actual time=0.058..1.346 rows=369 loops=1)
        -> Index lookup on v1_post using v1_post_user_id_idx (user_id=173)  (cost=196.05 rows=369) (actual time=0.054..0.847 rows=369 loops=1)
        -> 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)
    -> 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)
 |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
mysql> use NOSQL;
Database changed
mysql> explain analyze 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
    -> join v1_topic
    -> on v1_post.topic_id = v1_topic.id and v1_post.user_id = '173'
    -> join v1_attachment
    -> on v1_post.id = v1_attachment.post_id;
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPLAIN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| -> Nested loop inner join  (cost=473.77 rows=424) (actual time=0.091..2.388 rows=197 loops=1)
    -> Nested loop inner join  (cost=325.20 rows=369) (actual time=0.056..1.299 rows=369 loops=1)
        -> Index lookup on v1_post using v1_post_user_id_idx (user_id=173)  (cost=196.05 rows=369) (actual time=0.052..0.835 rows=369 loops=1)
        -> 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)
    -> Index lookup on v1_attachment using v1_attachment_unq (post_id=v1_post.id)  (cost=0.29 rows=1) (actual time=0.002..0.003 rows=1 loops=369)
 |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
mysql> use NOSQL;
Database changed
mysql> explain analyze select v1_post.id, v1_post.user_id, v1_post.author, v1_topic.forum_id, v1_post.topic_id, v1_attachment.name
    -> from v1_topic
    -> join v1_post
    -> on v1_post.topic_id = v1_topic.id and v1_post.user_id = '173'
    -> join v1_attachment
    -> on v1_post.id = v1_attachment.post_id;
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPLAIN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| -> Nested loop inner join  (cost=473.77 rows=424) (actual time=0.108..2.313 rows=197 loops=1)
    -> Nested loop inner join  (cost=325.20 rows=369) (actual time=0.064..1.334 rows=369 loops=1)
        -> Index lookup on v1_post using v1_post_user_id_idx (user_id=173)  (cost=196.05 rows=369) (actual time=0.059..0.742 rows=369 loops=1)
        -> 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)
    -> 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)
 |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60369
Модест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat2  09.06.2022, 16:24
[игнорируется]
Соединение будет происходить одинаково в обоих случаях, но LEFT, как правило, возвращает больше записей и поэтому выполняется медленнее
Наверное не меньше.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60370
Sad_But_False
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat2  07.06.2022, 19:45
[игнорируется]
LEFT INNER JOIN
ебануцо
...
Рейтинг: 1 / 0
Нравится: PaNik
Господа базоёбы, скок сюды
    #60375
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне другое интересно. У деды что, каждый пост три раза хранится? Просто, хтмл и серчабле?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60376
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Гесты и игнорируемые идут по CSS
Sad_But_False  09.06.2022, 17:48
[игнорируется]
cat2  07.06.2022, 19:45
[игнорируется]
LEFT INNER JOIN
ебануцо
Ну ебанулся временно, бывает!
...
Изменено: 09.06.2022, 17:57 - cat2
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60379
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  09.06.2022, 17:54
[игнорируется]
Мне другое интересно. У деды что, каждый пост три раза хранится? Просто, хтмл и серчабле?
ну исходя из записей - да
pasted_image.png
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60381
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Гесты и игнорируемые идут по CSS
Просто Трёп [игнорируется] 

Это не у Деды. Деда сам движок не писал,
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60382
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat2  09.06.2022, 18:01
[игнорируется]
Просто Трёп [игнорируется] 

Это не у Деды. Деда сам движок не писал,
а откуда движок?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60392
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Гесты и игнорируемые идут по CSS
basename  09.06.2022, 18:03
[игнорируется]
cat2  09.06.2022, 18:01
[игнорируется]
Просто Трёп [игнорируется] 

Это не у Деды. Деда сам движок не писал,
а откуда движок?
Деда писал, но я не помню. А может и ошибаюсь
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60411
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  09.06.2022, 14:40
[игнорируется]
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
Господа базоёбы, скок сюды
    #60413
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
basename  09.06.2022, 16:12
[игнорируется]
PaNik  09.06.2022, 15:59
[игнорируется]
basename  09.06.2022, 15:54
[игнорируется]
PaNik [игнорируется] 

Есть в консоли выполнения общее время, 0.016 sec

Одинаковое для обеих запросов
Размер таблиц небольшой
Правильно ли я понимаю, грубо говоря, в случае left join ему надо просто к большому куску надо присобачить ещё кусочек, а в случае join, отсечь ненужное из двух кусков и уже их склеить? тогда вроде бы логично, что join дороже и дольше должен выполняться?
Логика у inner join и left join разная
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60414
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
cat2  09.06.2022, 16:24
[игнорируется]
Соединение будет происходить одинаково в обоих случаях
На физическом уровне вообще не факт
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60415
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
basename  09.06.2022, 16:26
[игнорируется]
Tammy Jo Saint Cloud [игнорируется] 

+ ещё зависит от реализации в СУБД? MS SQL, MySQL, PostgreSQL, ORACLE?
Определённо, хотя не обязательно
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60416
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Горбатый ёж  09.06.2022, 16:34
[игнорируется]
Tammy Jo Saint Cloud [игнорируется] 

Это что за древняя СУБД?
Или это любители хинтовать запросы?
Пошэгей, как известный пидарас, наверняка пишет хинты
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60418
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
basename  09.06.2022, 17:13
[игнорируется]
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 выполняется быстрее почти в два раза!!!!!
Я вот интуитивно чувствую, возможно в этом дело, получается основная таблица post, но в ней нет данных по аттачменту. У поста аттачменты могут быть, а могут и не быть. Когда оно клеит две таблицы, оно доавляет поле и где аттачмента нет, хуячит туда нуль. А в случае join ему нужно отсчеь вообще всё ненужное. Может быть дело в этом.

Короче, я хз
Ещё учитывай, что таблица с постами самая объемная
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60420
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
basename  09.06.2022, 17:58
[игнорируется]
Просто Трёп  09.06.2022, 17:54
[игнорируется]
Мне другое интересно. У деды что, каждый пост три раза хранится? Просто, хтмл и серчабле?
ну исходя из записей - да
pasted_image.png
Не факт
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60446
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  09.06.2022, 16:45
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 16:43
[игнорируется]
В некоторых случаях нормальный человек НИКОГДА не будет делать индекс на ФК
Случаи в студию.
к примеру, у нас есть таблица неких фактов/журнал/леджер, который содержит поле... ну, например - "аналитика", которое, разумеется, ссылается на справочник "аналитика". Если ссылается - значит нужен ФК.
Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации
Следовательно, это поле индексировать не нужно
Таким образом на большой таблице мы экономим один большой ненужный индекс
И если полей типа "аналитика" несколько - то таким образом мы эконономим несколько раз
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60447
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так, нахуй
Базя, если ты не в состоянии в собственном топике фильтровать обсосов типа дубль вэ - я не вижу смысла обсуждать тут общаться конструктивно

Я пытался.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60483
папа акуз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
W  09.06.2022, 21:29
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 20:40
[игнорируется]
так, нахуй
Базя, если ты не в состоянии в собственном топике фильтровать обсосов типа дубль вэ - я не вижу смысла обсуждать тут общаться конструктивно

Я пытался.
ты обоссаный пес
твои попытки не засчитаны
профессионал ты никакой
ты хороший пидор - аставаяся с нами будешь и дальше пидором
ну а чо ты хотел? в элиту таких как ты не берут
хуйца соснуть не предложишь?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60499
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tammy Jo Saint Cloud  09.06.2022, 20:38
[игнорируется]
Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации
Это случай обеспечения целостности без использования поиска. Это я и так знаю.
Ещё есть примеры?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60505
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  09.06.2022, 21:46
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 20:38
[игнорируется]
Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации
Это случай обеспечения целостности без использования поиска. Это я и так знаю.
Ещё есть примеры?
Одного достаточно, нет? :)
...
Рейтинг: 0 / 0
25 сообщений из 242, страница 8 из 10
Форумы / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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