powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды, Поиск: Искать сообщения, созданные автором: basename  
25 сообщений из 60, страница 2 из 3
MySQL / Господа базоёбы, скок сюды
    #60138
basename
Скрыть профиль Поместить в игнор-лист
Участник
W  08.06.2022, 10:53
[игнорируется]
basename  07.06.2022, 19:44
[игнорируется]
Sparrow  07.06.2022, 19:42
[игнорируется]
basename [игнорируется] 

Distinct плохо, значит ты не понимаешь структуру базы или она плоха.

Как правило нужно добавить ещё условия в join , или в условия

Where
про distinct навскидку уже понял, что это плохо.
схуяле блядь это плохо?
поменьше слушай всяких пидоров
ну если можно сделать без distinct и его используешь, значит просто неверно составляешь запрос и прибегаешь уже почти к стороннему средству? так можно что-то не то отрубить или наоборот, в моем то случае конечно по хер.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60149
basename
Скрыть профиль Поместить в игнор-лист
Участник
В общем, вот структуры таблиц, из которых я беру данные

Можно просто вывести из таблички v1_attachment все вложения пользователя но я хочу наглядно видеть
- id поста
- id пользователя
- имя пользователя
- id форума
- 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.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
mysql> describe v1_user;
+----------------------------+--------------+------+-----+---------+----------------+
| Field                      | Type         | Null | Key | Default | Extra          |
+----------------------------+--------------+------+-----+---------+----------------+
| id                         | int          | NO   | PRI | NULL    | auto_increment |
| login                      | varchar(255) | NO   | UNI | NULL    |                |
| password_hash              | varchar(255) | NO   |     | NULL    |                |
| user_name                  | varchar(255) | NO   | UNI | NULL    |                |
| user_name_hash             | varchar(255) | YES  | MUL | NULL    |                |
| email                      | varchar(255) | NO   |     | NULL    |                |
| email_hash                 | varchar(255) | YES  | UNI | NULL    |                |
| hide_email                 | tinyint      | NO   |     | 1       |                |
| registration_date          | datetime     | NO   |     | NULL    |                |
| last_visit_date            | datetime     | YES  |     | NULL    |                |
| last_post_date             | datetime     | YES  |     | NULL    |                |
| is_admin                   | tinyint      | NO   |     | 0       |                |
| message                    | varchar(500) | YES  |     | NULL    |                |
| info                       | text         | YES  |     | NULL    |                |
| homepage                   | varchar(500) | YES  |     | NULL    |                |
| signature                  | text         | YES  |     | NULL    |                |
| pwd_reset_hash             | varchar(255) | YES  | MUL | NULL    |                |
| pwd_reset_expire           | datetime     | YES  |     | NULL    |                |
| activation_hash            | varchar(100) | YES  |     | NULL    |                |
| activation_expire          | datetime     | YES  |     | NULL    |                |
| activated                  | tinyint      | NO   |     | 0       |                |
| died                       | tinyint      | NO   |     | 0       |                |
| autologin_hash             | varchar(255) | YES  | MUL | NULL    |                |
| blocked                    | tinyint      | NO   |     | 0       |                |
| self_blocked               | tinyint      | NO   |     | 0       |                |
| block_expires              | datetime     | YES  | MUL | NULL    |                |
| block_reason               | text         | YES  |     | NULL    |                |
| hide_user_avatars          | tinyint      | NO   |     | 0       |                |
| hide_user_info             | tinyint      | NO   |     | 0       |                |
| hide_pictures              | tinyint      | NO   |     | 0       |                |
| donot_hide_adult_pictures  | tinyint      | NO   |     | 0       |                |
| hide_ignored               | tinyint      | NO   |     | 0       |                |
| location                   | varchar(255) | YES  |     | NULL    |                |
| hidden                     | tinyint      | NO   |     | 0       |                |
| send_notifications         | tinyint      | NO   |     | 0       |                |
| donot_notify_on_rates      | tinyint      | NO   |     | 0       |                |
| no_private_messages        | tinyint      | NO   |     | 0       |                |
| turnoff_personal_appeals   | tinyint      | NO   |     | 0       |                |
| turnoff_events             | tinyint      | NO   |     | 0       |                |
| approved                   | tinyint      | NO   |     | 0       |                |
| read_marker                | varchar(255) | YES  | UNI | NULL    |                |
| ip                         | varchar(250) | YES  |     | NULL    |                |
| last_ip                    | varchar(250) | YES  |     | NULL    |                |
| ignore_guests_blacklist    | tinyint      | NO   |     | 0       |                |
| ignore_guests_whitelist    | tinyint      | NO   |     | 0       |                |
| ignore_new_guests          | tinyint      | NO   |     | 0       |                |
| no_video_expand            | tinyint      | NO   |     | 0       |                |
| logout                     | tinyint      | NO   |     | 0       |                |
| last_logout_date           | datetime     | YES  |     | NULL    |                |
| last_events_view_date      | datetime     | YES  |     | NULL    |                |
| rating_blocked             | tinyint      | NO   |     | 0       |                |
| time_zone                  | varchar(255) | YES  |     | NULL    |                |
| privileged                 | tinyint      | NO   |     | 0       |                |
| privileged_topic_moderator | tinyint      | NO   |     | 0       |                |
| notify_about_new_users     | tinyint      | NO   |     | 0       |                |
| notify_citation            | tinyint      | NO   |     | 0       |                |
| skin                       | varchar(255) | YES  |     | NULL    |                |
| skin_properties            | text         | YES  |     | NULL    |                |
| interface_language         | varchar(50)  | YES  |     | NULL    |                |
| global_ban_allowed         | tinyint      | NO   |     | 0       |                |
| show_ip                    | tinyint      | NO   |     | 0       |                |
| notify_on_words            | tinyint      | NO   |     | 0       |                |
| words_to_notify            | text         | YES  |     | NULL    |                |
| hide_comments              | tinyint      | NO   |     | 0       |                |
| thematic_per_default       | tinyint      | NO   |     | 0       |                |
| last_host                  | varchar(255) | YES  |     | NULL    |                |
| custom_css                 | text         | YES  |     | NULL    |                |
| custom_smiles              | text         | YES  |     | NULL    |                |
| ref                        | int          | YES  |     | NULL    |                |
+----------------------------+--------------+------+-----+---------+----------------+
69 rows in set (0.01 sec)

mysql> describe v1_post;
+--------------------+--------------+------+-----+---------+----------------+
| Field              | Type         | Null | Key | Default | Extra          |
+--------------------+--------------+------+-----+---------+----------------+
| id                 | int          | NO   | PRI | NULL    | auto_increment |
| user_id            | int          | YES  | MUL | NULL    |                |
| author             | varchar(255) | NO   | MUL | NULL    |                |
| creation_date      | datetime     | NO   | MUL | NULL    |                |
| pinned             | tinyint      | NO   | MUL | 0       |                |
| deleted            | tinyint      | NO   | MUL | 0       |                |
| text_content       | mediumtext   | YES  |     | NULL    |                |
| html_content       | mediumtext   | YES  |     | NULL    |                |
| searchable_content | mediumtext   | YES  | MUL | NULL    |                |
| has_picture        | tinyint      | NO   | MUL | 0       |                |
| has_audio          | tinyint      | NO   | MUL | 0       |                |
| has_video          | tinyint      | NO   | MUL | 0       |                |
| has_link           | tinyint      | NO   | MUL | 0       |                |
| has_code           | tinyint      | NO   | MUL | 0       |                |
| has_attachment     | tinyint      | NO   | MUL | 0       |                |
| has_attachment_ref | tinyint      | NO   | MUL | 0       |                |
| read_marker        | varchar(255) | YES  | MUL | NULL    |                |
| ip                 | varchar(250) | YES  | MUL | NULL    |                |
| last_updated_by    | varchar(255) | YES  |     | NULL    |                |
| last_updated       | datetime     | YES  |     | NULL    |                |
| self_edited        | tinyint      | NO   |     | 0       |                |
| last_warned_by     | varchar(255) | YES  |     | NULL    |                |
| last_warning       | text         | YES  |     | NULL    |                |
| bb_parser_version  | int          | NO   |     | 1       |                |
| topic_id           | int          | NO   | MUL | NULL    |                |
| user_marker        | varchar(255) | YES  | MUL | NULL    |                |
| user_agent         | varchar(500) | YES  |     | NULL    |                |
| is_comment         | tinyint      | NO   | MUL | 0       |                |
| is_adult           | tinyint      | NO   | MUL | 0       |                |
| is_system          | tinyint      | NO   |     | 0       |                |
| ref                | int          | YES  | MUL | NULL    |                |
+--------------------+--------------+------+-----+---------+----------------+
31 rows in set (0.00 sec)

mysql> describe v1_attachment;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int          | NO   | PRI | NULL    | auto_increment |
| post_id      | int          | NO   | MUL | NULL    |                |
| nr           | int          | NO   |     | NULL    |                |
| name         | varchar(700) | YES  | MUL | NULL    |                |
| origin_name  | varchar(700) | YES  |     | NULL    |                |
| type         | varchar(255) | YES  | MUL | NULL    |                |
| deleted      | tinyint      | NO   |     | 0       |                |
| user_id      | int          | YES  | MUL | NULL    |                |
| favourite    | tinyint      | NO   | MUL | 0       |                |
| last_post_id | int          | NO   | MUL | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+
10 rows in set (0.00 sec)

mysql> describe v1_topic;
+----------------------+--------------+------+-----+---------+----------------+
| Field                | Type         | Null | Key | Default | Extra          |
+----------------------+--------------+------+-----+---------+----------------+
| id                   | int          | NO   | PRI | NULL    | auto_increment |
| name                 | varchar(700) | NO   | MUL | NULL    |                |
| author               | varchar(255) | NO   | MUL | NULL    |                |
| creation_date        | datetime     | NO   | MUL | NULL    |                |
| deleted              | tinyint      | NO   | MUL | 0       |                |
| closed               | tinyint      | NO   |     | 0       |                |
| pinned               | tinyint      | NO   | MUL | 0       |                |
| read_marker          | varchar(255) | YES  | MUL | NULL    |                |
| has_pinned_post      | tinyint      | NO   |     | 0       |                |
| merged               | int          | YES  |     | NULL    |                |
| is_poll              | tinyint      | NO   |     | 0       |                |
| poll_comment         | text         | YES  |     | NULL    |                |
| poll_results_delayed | tinyint      | NO   |     | 0       |                |
| no_guests            | tinyint      | NO   |     | 0       |                |
| forum_id             | int          | NO   | MUL | NULL    |                |
| user_id              | int          | YES  | MUL | NULL    |                |
| user_marker          | varchar(255) | YES  |     | NULL    |                |
| is_private           | tinyint      | NO   | MUL | 0       |                |
| publish_delay        | tinyint      | NO   | MUL | 0       |                |
| profiled_topic       | tinyint      | NO   |     | 0       |                |
| request_moderation   | tinyint      | NO   |     | 0       |                |
| ref                  | int          | YES  | MUL | NULL    |                |
+----------------------+--------------+------+-----+---------+----------------+
22 rows in set (0.00 sec)

mysql> describe v1_forum;
+-----------------------+--------------+------+-----+---------+----------------+
| Field                 | Type         | Null | Key | Default | Extra          |
+-----------------------+--------------+------+-----+---------+----------------+
| id                    | int          | NO   | PRI | NULL    | auto_increment |
| name                  | varchar(255) | NO   | UNI | NULL    |                |
| protected_by_password | tinyint      | NO   | MUL | 0       |                |
| password              | varchar(255) | YES  |     | NULL    |                |
| creation_date         | datetime     | NO   |     | NULL    |                |
| restricted_access     | tinyint      | NO   | MUL | 0       |                |
| allow_edit            | tinyint      | NO   |     | 0       |                |
| no_guests             | tinyint      | NO   |     | 0       |                |
| user_posting_as_guest | tinyint      | NO   |     | 0       |                |
| restricted_guest_mode | tinyint      | NO   |     | 0       |                |
| hide_from_robots      | tinyint      | NO   |     | 0       |                |
| description           | varchar(500) | YES  |     | NULL    |                |
| deleted               | tinyint      | NO   | MUL | 0       |                |
| closed                | tinyint      | NO   |     | 0       |                |
| sort_order            | int          | NO   |     | 0       |                |
| access_duration       | int          | YES  |     | NULL    |                |
| access_message_count  | int          | YES  |     | NULL    |                |
| stringent_rules       | tinyint      | NO   |     | 0       |                |
+-----------------------+--------------+------+-----+---------+----------------+
18 rows in set (0.01 sec)

mysql>
...
Рейтинг: 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 / Господа базоёбы, скок сюды
    #60154
basename
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  08.06.2022, 14:39
[игнорируется]
Горбатый ёж  08.06.2022, 14:29
[игнорируется]
PaNik  08.06.2022, 14:27
[игнорируется]
Там имя файла с аттачментом. Если там null - аттачмента нет.
Откуда ты знаешь все общие случаи?
А что делать, если аттачмент в систему приаттачивается посредством православного копипаста, который о опять таки в общем случае может не иметь никакого имени файла (в отличии от богомерзкого драгэндропа)?
basename, что хранится в поле v1_attachment.name?
60149
...
Рейтинг: 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 / Господа базоёбы, скок сюды
    #60159
basename
Скрыть профиль Поместить в игнор-лист
Участник
Горбатый ёж  09.06.2022, 14:47
[игнорируется]
basename  09.06.2022, 14:36
[игнорируется]
Я так и не понял до сих пор чем плох конкретно мой запрос.
Тем, что ты используешь left join.
Тебе он не нужен, потому что ты ищешь вложения.
Замени left join на join и убери условие name is not null.
ага, уже сделал. постом выше
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60168
basename
Скрыть профиль Поместить в игнор-лист
Участник
Горбатый ёж  09.06.2022, 14:52
[игнорируется]
basename [игнорируется] 

id пользователя указывай без апострофов, копейки конечно, но мало ли.
В апострофах строковые данные пишутся, а id там int.
ок, спасибо
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60194
basename
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  07.06.2022, 19:59
[игнорируется]
basename, планы давай
На первой картинке для моего сабжевого запроса

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

на второй с простым join
pasted_image.png
pasted_image.png
Хм, а почему с join Query Cost больше, чем с Left Join?
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60214
basename
Скрыть профиль Поместить в игнор-лист
Участник
basename  09.06.2022, 15:16
[игнорируется]
basename  09.06.2022, 15:13
[игнорируется]
PaNik  07.06.2022, 19:59
[игнорируется]
basename, планы давай
На первой картинке для моего сабжевого запроса

на второй с простым join
pasted_image.png
pasted_image.png
Хм, а почему с join Query Cost больше, чем с Left Join?
Господа, проясните плиз за Query cost. Ведь значение больше, это хуже?
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60226
basename
Скрыть профиль Поместить в игнор-лист
Участник
Tammy Jo Saint Cloud  09.06.2022, 15:21
[игнорируется]
Горбатый ёж  09.06.2022, 14:46
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 14:41
[игнорируется]
постгре
Эта не мелкая.
И всё равно я сомневаюсь, что замена left join на join может вызвать деградацию.
select a.*
from Table1 a left join table2 b on a=b

vs

select a.*
from Table1 a inner join table2 b on a=b

могут давать разный перформанс при разный случаях
Если я правильно понял, в сабжевом случае, согласно анализатору запроса, left join быстрее работает?
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60234
basename
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  09.06.2022, 15:36
[игнорируется]
basename  09.06.2022, 15:16
[игнорируется]
basename  09.06.2022, 15:13
[игнорируется]
PaNik  07.06.2022, 19:59
[игнорируется]
basename, планы давай
На первой картинке для моего сабжевого запроса

на второй с простым join
pasted_image.png
pasted_image.png
Хм, а почему с join Query Cost больше, чем с Left Join?
Планы разные.
По сути вопроса: вероятно, количество вложений подопытного несколько менее числа топиков, в которые он насрал.
Блин, сложный ваш SQL. даже текущую задачу можно решить фиг знает сколькми способами.

То ли дело файрволл одминить, либо ещё чего-нибудь конфигурастить в ОС и ПО. там арифметика чёткая без возможности выбора вариантов достижения )))

Хотя правда в сложной маршрутизации тоже есть стоимость маршрута
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60238
basename
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  09.06.2022, 15:39
[игнорируется]
basename  09.06.2022, 15:30
[игнорируется]
basename  09.06.2022, 15:16
[игнорируется]
basename  09.06.2022, 15:13
[игнорируется]
PaNik  07.06.2022, 19:59
[игнорируется]
...
На первой картинке для моего сабжевого запроса

на второй с простым join
pasted_image.png
pasted_image.png
Хм, а почему с join Query Cost больше, чем с Left Join?
Господа, проясните плиз за Query cost. Ведь значение больше, это хуже?
По планам порядок соединения таблиц разный.
Это реальный план выполнения или предполагаемый?
Вот ты спросил )))

https://dev.mysql.com/doc/workbench/en/wb-performance-explain.html

Нажал выполнить запрос, потом Execution plan

Видимо, реальный
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60241
basename
Скрыть профиль Поместить в игнор-лист
Участник
W  09.06.2022, 15:41
[игнорируется]
basename  09.06.2022, 15:13
[игнорируется]
PaNik  07.06.2022, 19:59
[игнорируется]
basename, планы давай
На первой картинке для моего сабжевого запроса

на второй с простым join
pasted_image.png
pasted_image.png
а нахуя это ты тут привел?
если ты так дальше будешь углубляться, то не в запросе твоем дело, а в структуре фашисткой базы
и всем этом ебучем php-ковнокоде
ну мне интересно. и причём здесь php, если тут прямой SQL запрос в БД?
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60254
basename
Скрыть профиль Поместить в игнор-лист
Участник
W  09.06.2022, 15:47
[игнорируется]
basename  09.06.2022, 15:44
[игнорируется]
W  09.06.2022, 15:41
[игнорируется]
basename  09.06.2022, 15:13
[игнорируется]
PaNik  07.06.2022, 19:59
[игнорируется]
...
На первой картинке для моего сабжевого запроса

на второй с простым join
pasted_image.png
pasted_image.png
а нахуя это ты тут привел?
если ты так дальше будешь углубляться, то не в запросе твоем дело, а в структуре фашисткой базы
и всем этом ебучем php-ковнокоде
ну мне интересно. и причём здесь php, если тут прямой SQL запрос в БД?
да потому что как ты уже (правильно) сказал - тут много вариантов изъеба. у фашика они наколеночные. если ты на своем запросе завис - то еще раз - он нормальный, ничего ты с ним не сделаешь. если он тупит - нет индексов или кривая структура БД. все
это тебе элита говорит. внемли
да ничего не тупит. просто интересно.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60258
basename
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  09.06.2022, 15:47
[игнорируется]
basename  09.06.2022, 15:43
[игнорируется]
PaNik  09.06.2022, 15:39
[игнорируется]
basename  09.06.2022, 15:30
[игнорируется]
basename  09.06.2022, 15:16
[игнорируется]
...
Господа, проясните плиз за Query cost. Ведь значение больше, это хуже?
По планам порядок соединения таблиц разный.
Это реальный план выполнения или предполагаемый?
Вот ты спросил )))

https://dev.mysql.com/doc/workbench/en/wb-performance-explain.html

Нажал выполнить запрос, потом Execution plan

Видимо, реальный
Ну в ms sql management studio 2 кнопки - предполагаемый план и реальный план.
По времени выполнения тоже смотреть желательно, а не только на стоимость.
в этой штуке не вижу такого и не вижу как время отобразить. наверняка где-то есть
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60264
basename
Скрыть профиль Поместить в игнор-лист
Участник
PaNik [игнорируется] 

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

Одинаковое для обеих запросов
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60266
basename
Скрыть профиль Поместить в игнор-лист
Участник
W [игнорируется] 

Я вот всё-таки не пойму, ты Пашэ или не Пашэ? ))
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60292
basename
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  09.06.2022, 15:59
[игнорируется]
basename  09.06.2022, 15:54
[игнорируется]
PaNik [игнорируется] 

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

Одинаковое для обеих запросов
Размер таблиц небольшой
Правильно ли я понимаю, грубо говоря, в случае left join ему надо просто к большому куску надо присобачить ещё кусочек, а в случае join, отсечь ненужное из двух кусков и уже их склеить? тогда вроде бы логично, что join дороже и дольше должен выполняться?
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60311
basename
Скрыть профиль Поместить в игнор-лист
Участник
Tammy Jo Saint Cloud  09.06.2022, 16:22
[игнорируется]
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 дороже и дольше должен выполняться?
нет и не всегда
+ ещё зависит от реализации в СУБД? MS SQL, MySQL, PostgreSQL, ORACLE?
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60316
basename
Скрыть профиль Поместить в игнор-лист
Участник
Горбатый ёж  09.06.2022, 16:28
[игнорируется]
Хуяссе планы...
что с ними не так? )
...
Рейтинг: 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 / Господа базоёбы, скок сюды
    #60334
basename
Скрыть профиль Поместить в игнор-лист
Участник
Горбатый ёж [игнорируется] 

Вот ещё вывод 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'
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60342
basename
Скрыть профиль Поместить в игнор-лист
Участник
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 выполняется быстрее почти в два раза!!!!!
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #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
25 сообщений из 60, страница 2 из 3
Форумы / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды, Поиск: Искать сообщения, созданные автором: basename  
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (2): Анонимы (1), Google Bot 4 мин.
Пользователи онлайн (33): Анонимы (19), Брюквенные годы, Bing Bot, Yandex Bot, CerebroSQL, Разум вселенной 1 мин., Google Bot 1 мин., Дед-Папыхтет 1 мин., Гарыныч 3 мин., Antonariy 4 мин., XEugene 5 мин., S Baltiki 5 мин., Артефакт 6 мин., Redd 8 мин., Сталкер 9 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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