powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы [новые:3] / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды, Поиск: Искать сообщения, созданные автором: cat2  
16 сообщений из 16, страница 1 из 1
MySQL / Господа базоёбы, скок сюды
    #58493
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
left join не нужен.
Просто JOIN.

И тогда не нужно будет и условие and v1_attachment.name is not null;. Такие записи сами отсекутся при выполнении on v1_post.id = v1_attachment.post_id
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58500
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Черт. Это же MySQl

Не знаю, как там LEFT JOIN по умолчанию

LEFT OUTER JOIN

или

LEFT INNER JOIN
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58725
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Горбатый ёж  07.06.2022, 21:30
[игнорируется]
cat2  07.06.2022, 19:41
[игнорируется]
left join не нужен.
Просто JOIN.

И тогда не нужно будет и условие and v1_attachment.name is not null;. Такие записи сами отсекутся при выполнении on v1_post.id = v1_attachment.post_id
Чегой?...
Это с какого суахили?
Я понимаю, что в данном случае имя у атачмента вряд ли будет null, но как оно связано с джойном и лефт джойном, мне понять не суждено.
С left outer join будут выбраны все посты атора, в том числе и те, где нет аттачментов. С join - только те, у которых есть аттачменты
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58753
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
basename  07.06.2022, 22:12
[игнорируется]
PaNik  07.06.2022, 22:05
[игнорируется]
basename  07.06.2022, 21:46
[игнорируется]
Горбатый ёж  07.06.2022, 21:44
[игнорируется]
basename  07.06.2022, 21:41
[игнорируется]
...
Потому что лефт покажет записи из постов даже те, у которых нет аттачей.
Зачем тебе они, если ты аттачи ищешь?
И зачем тебе показывать посты, которые не привязаны к топикам (с лефтом именно так ты и делаешь), если это как минимум странно? Как там планы в таком случае это майскуль построит ХЗ.
А… понял. Тупой сука. Он же все равно сканит таблицу полностью, потом селект делает. Так?

Он все присоединил вначале, потом просто отобразил, что попросили.
Йожег попутал, у тебя is not null в where, а не в on
Дык он с нулями выводил, я это и вставил. Правильно или нет - я хз. У вас спрашиваю.
Завязывай спрашивать, делай что советуют
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60306
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
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 дороже и дольше должен выполняться?
Соединение будет происходить одинаково в обоих случаях, но LEFT, как правило, возвращает больше записей и поэтому выполняется медленнее
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60314
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Tammy Jo Saint Cloud  09.06.2022, 16:24
[игнорируется]
cat2  09.06.2022, 16:24
[игнорируется]
Соединение будет происходить одинаково в обоих случаях, но LEFT, как правило, возвращает больше записей и поэтому выполняется медленнее
нет
Обоснуй
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60324
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Tammy Jo Saint Cloud  09.06.2022, 16:31
[игнорируется]
а вот для select * from Tab1 left join tab2 on a=b будет уже 2 варианта - идти по таб1 и лепить таб2 - или идти по таб2 и лепить к ней таб1
таким образом "Одинаково в обоих случаях" - немного неправильно.
Второй вариант может выполнятся или на коротких таблицах, когда оптимизатор решит, что использовать индексы тут нет нужды, или когда в первой таблице есть индекс по полю второй таблицы.

То есть.
Если у нас таблицы Post и Attachment, то в Post должен быть индекс по Attachment_Id. Не думаю, что кто-нибудь будет такой индекс делать
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60337
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Tammy Jo Saint Cloud  09.06.2022, 16:43
[игнорируется]
cat2  09.06.2022, 16:39
[игнорируется]
Второй вариант может выполнятся или на коротких таблицах, когда оптимизатор решит, что использовать индексы тут нет нужды, или когда в первой таблице есть индекс по полю второй таблицы.
што блядь?
Я могу показать как минимум несколько вариантов - с большими таблицами, с маленькими, с индексами, без индексов и так далее.

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

Я тоже могу придумать способ, когда никаких индексов нет и INNER с OUTER будут выполнятся за одно и тоже время.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60339
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Tammy Jo Saint Cloud  09.06.2022, 16:43
[игнорируется]
Горбатый ёж  09.06.2022, 16:41
[игнорируется]
Нормальный человек будет делать индекс на FK.
Очень сильно зависит от.
В некоторых случаях нормальный человек НИКОГДА не будет делать индекс на ФК
О, господи! Откуда этот придурок на нас свалился!
Дофига способов построить кривую базу, но вовсе не надо применять их всех!
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60348
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
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 в виде таблицы, то он был другим
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #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
MySQL / Господа базоёбы, скок сюды
    #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
MySQL / Господа базоёбы, скок сюды
    #60381
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Просто Трёп [игнорируется] 

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

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

Я бы хотел глянуть какие индексы навешаны на таблицы.
...
Рейтинг: 1 / 0
Нравится: PaNik
MySQL / Господа базоёбы, скок сюды
    #60954
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
basename [игнорируется] 
Пойдет.
Ну вот. Теперь все ясно. Зря я на Tammy Jo Saint Cloud наезжал..

Сумрачный тевтонский гений Деды сделал-таки в attacment индекс по post_id.
И не сделал для lookup-таблицы attacment кластерного первичного индекса (post_Id, id)
Поэтому inner join и тормозит

Закон Паркинсона работает всегда.
"Если что-то можно сделать неправильно, то всегда найдется ... который так и сделает
...
Рейтинг: 1 / 0
Нравится: Гарыныч
16 сообщений из 16, страница 1 из 1
Форумы [новые:3] / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды, Поиск: Искать сообщения, созданные автором: cat2  
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (1): Анонимы (1)
Пользователи онлайн (33): Анонимы (20), Сталкер, Yandex Bot, IT-Клоп, Bing Bot, S Baltiki, Просто Трёп, Буся, serg_tmb 1 мин., Sparrow 1 мин., XEugene 2 мин., pashtetos1 2 мин., Antonariy 3 мин., s62 4 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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