powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды
242 сообщений из 242, показаны все 10 страниц
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #58492
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Хз как там в MySQL, но псевдонимы таблицам я бы назначил
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58493
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
left join не нужен.
Просто JOIN.

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

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

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

Where
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58496
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
спасибо
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58498
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sparrow  07.06.2022, 19:42
[игнорируется]
basename [игнорируется] 

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

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

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

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
...
Рейтинг: 1 / 0
Нравится: PaNik
Господа базоёбы, скок сюды
    #58500
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Черт. Это же MySQl

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

LEFT OUTER JOIN

или

LEFT INNER JOIN
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58501
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное оутер. Непонятно откуда у него дубли были
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58503
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
Тож так сначала подумал, что надо from v1_attachment сделать.
Но потом подумал, что на v1_post.user_id наверняка индекс есть.
...
Изменено: 07.06.2022, 19:48 - PaNik
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58504
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
к таблице post, самой объёмной, присоединяю остальные.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58505
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat2  07.06.2022, 19:45
[игнорируется]
Черт. Это же MySQl

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

LEFT OUTER JOIN

или

LEFT INNER JOIN
согласно доке - outer
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58506
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  07.06.2022, 19:47
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
Тож так сначала подумал, что надо from v1_attachment сделать.
Но потом подумал, что на v1_post.user_id наверняка индекс есть.
Так-то лефтами можно выстраивать порядок соединения выборки, есть такой лайфхак, но нормальный оптимизатор сам должен разбираться с такими вещами если можно индекс подцепить. Сейчас 2022 на лворе
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58507
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паразит  07.06.2022, 19:46
[игнорируется]
Наверное оутер. Непонятно откуда у него дубли были
я вначале к табличке с вложениями пытался прикрутить.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58508
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
паразит  07.06.2022, 19:50
[игнорируется]
PaNik  07.06.2022, 19:47
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
Тож так сначала подумал, что надо from v1_attachment сделать.
Но потом подумал, что на v1_post.user_id наверняка индекс есть.
Так-то лефтами можно выстраивать порядок соединения выборки, есть такой лайфхак, но нормальный оптимизатор сам должен разбираться с такими вещами если можно индекс подцепить. Сейчас 2022 на лворе
Крайний раз MySQL в 2006-м году трогал, чего там с оптимизатором сейчас - вообще без понятия [:prankster]
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58510
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 19:49
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
к таблице post, самой объёмной, присоединяю остальные.
Понятно. Фик знает как там мусикл действует, но по сути ты сначала получаешь полную выборку и в том числе с сообщениями без аттачментов, а сверху накладываешь условие нот налл. Попробуй в условии склейки таблиц добавить этот нот налл. В фб такое прокатывали. Может побыстрее ьудет
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58511
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
basename, планы давай
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58512
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Вообще в ms sql хорошо (в теории) было бы примерно так:

1) при наличии индекса по v1_post.user_id выбираем во времянку id и темы всех сообщения юзверя (их пока немного, это ж не Инос или Гарыныч с дедофорума с Овер 100к постов).
2) эту времянку inner join'ним на v1_attachment и v1_topic, выводим нужные поля.
...
Изменено: 07.06.2022, 20:06 - PaNik
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58514
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паразит  07.06.2022, 19:55
[игнорируется]
basename  07.06.2022, 19:49
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
к таблице post, самой объёмной, присоединяю остальные.
Понятно. Фик знает как там мусикл действует, но по сути ты сначала получаешь полную выборку и в том числе с сообщениями без аттачментов, а сверху накладываешь условие нот налл. Попробуй в условии склейки таблиц добавить этот нот налл. В фб такое прокатывали. Может побыстрее ьудет
Пока о скорости речи нет, но на будущее может понадобится. Сейчас хочу просто корректный список на удаление формировать. У деды через интерфейс ничего не удаляется физически, только скрывается. Пока БД маленькая, проще подготовиться.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58515
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  07.06.2022, 19:59
[игнорируется]
basename, планы давай
Ха, если бы я их знал как делать :) ушёл от компа, посмотрю потом уже.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58519
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  07.06.2022, 19:47
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
Тож так сначала подумал, что надо from v1_attachment сделать.
Но потом подумал, что на v1_post.user_id наверняка индекс есть.
Я потом покажу структуру для понимания.

Таблички с вложениями, топиками и форумами - небольшие. Табличка пост - самая объемная. Вот с ней вроде более менее список выводится, как ожидалось.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58520
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
А что мне в данном случае даст right?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58523
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 20:20
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
А что мне в данном случае даст right?
Иннер джоин
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58525
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 20:14
[игнорируется]
паразит  07.06.2022, 19:55
[игнорируется]
basename  07.06.2022, 19:49
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
к таблице post, самой объёмной, присоединяю остальные.
Понятно. Фик знает как там мусикл действует, но по сути ты сначала получаешь полную выборку и в том числе с сообщениями без аттачментов, а сверху накладываешь условие нот налл. Попробуй в условии склейки таблиц добавить этот нот налл. В фб такое прокатывали. Может побыстрее ьудет
Пока о скорости речи нет, но на будущее может понадобится. Сейчас хочу просто корректный список на удаление формировать. У деды через интерфейс ничего не удаляется физически, только скрывается. Пока БД маленькая, проще подготовиться.
Что исходное в задаче, от чего ты оттадкиваешься, айди пользователя, его имя или ещё что-то?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58527
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
basename  07.06.2022, 20:19
[игнорируется]
Табличка пост - самая объемная.
Не суть, если там индекс по user_id include (post_id, topic_id), то все будет быстро (примерно к ms sql server)
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58528
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед на сиквел был слаб, насколько я помню
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58530
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паразит  07.06.2022, 20:25
[игнорируется]
basename  07.06.2022, 20:14
[игнорируется]
паразит  07.06.2022, 19:55
[игнорируется]
basename  07.06.2022, 19:49
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
...
к таблице post, самой объёмной, присоединяю остальные.
Понятно. Фик знает как там мусикл действует, но по сути ты сначала получаешь полную выборку и в том числе с сообщениями без аттачментов, а сверху накладываешь условие нот налл. Попробуй в условии склейки таблиц добавить этот нот налл. В фб такое прокатывали. Может побыстрее ьудет
Пока о скорости речи нет, но на будущее может понадобится. Сейчас хочу просто корректный список на удаление формировать. У деды через интерфейс ничего не удаляется физически, только скрывается. Пока БД маленькая, проще подготовиться.
Что исходное в задаче, от чего ты оттадкиваешься, айди пользователя, его имя или ещё что-то?
да, user id или имя автора. В общем, покажу позже структуры таблиц для понимания.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58531
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
паразит  07.06.2022, 20:25
[игнорируется]
basename  07.06.2022, 20:14
[игнорируется]
паразит  07.06.2022, 19:55
[игнорируется]
basename  07.06.2022, 19:49
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
...
к таблице post, самой объёмной, присоединяю остальные.
Понятно. Фик знает как там мусикл действует, но по сути ты сначала получаешь полную выборку и в том числе с сообщениями без аттачментов, а сверху накладываешь условие нот налл. Попробуй в условии склейки таблиц добавить этот нот налл. В фб такое прокатывали. Может побыстрее ьудет
Пока о скорости речи нет, но на будущее может понадобится. Сейчас хочу просто корректный список на удаление формировать. У деды через интерфейс ничего не удаляется физически, только скрывается. Пока БД маленькая, проще подготовиться.
Что исходное в задаче, от чего ты оттадкиваешься, айди пользователя, его имя или ещё что-то?
Исходное (как я понял) - аттачи юзера
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58537
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паразит  07.06.2022, 20:22
[игнорируется]
basename  07.06.2022, 20:20
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
А что мне в данном случае даст right?
Иннер джоин
Хм, в муsql inner join -это просто join, а right - то же, что left, но наоборот. Он тоже outer. Если я правильно понял.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58539
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  07.06.2022, 20:28
[игнорируется]
паразит  07.06.2022, 20:25
[игнорируется]
basename  07.06.2022, 20:14
[игнорируется]
паразит  07.06.2022, 19:55
[игнорируется]
basename  07.06.2022, 19:49
[игнорируется]
...
Понятно. Фик знает как там мусикл действует, но по сути ты сначала получаешь полную выборку и в том числе с сообщениями без аттачментов, а сверху накладываешь условие нот налл. Попробуй в условии склейки таблиц добавить этот нот налл. В фб такое прокатывали. Может побыстрее ьудет
Пока о скорости речи нет, но на будущее может понадобится. Сейчас хочу просто корректный список на удаление формировать. У деды через интерфейс ничего не удаляется физически, только скрывается. Пока БД маленькая, проще подготовиться.
Что исходное в задаче, от чего ты оттадкиваешься, айди пользователя, его имя или ещё что-то?
Исходное (как я понял) - аттачи юзера
Ну а их выборка то на основе user_id
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58546
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 20:32
[игнорируется]
PaNik  07.06.2022, 20:28
[игнорируется]
паразит  07.06.2022, 20:25
[игнорируется]
basename  07.06.2022, 20:14
[игнорируется]
паразит  07.06.2022, 19:55
[игнорируется]
...
Пока о скорости речи нет, но на будущее может понадобится. Сейчас хочу просто корректный список на удаление формировать. У деды через интерфейс ничего не удаляется физически, только скрывается. Пока БД маленькая, проще подготовиться.
Что исходное в задаче, от чего ты оттадкиваешься, айди пользователя, его имя или ещё что-то?
Исходное (как я понял) - аттачи юзера
Ну а их выборка то на основе user_id
А юсер айди есть в таблице постов. Вот и надо для начала устроить выборку из таблице постов по индексу усерайди. Если он есть. А потом уже доклеить таблицы тем и аттачментов.
...
Рейтинг: 1 / 0
Нравится: PaNik
Господа базоёбы, скок сюды
    #58551
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 20:31
[игнорируется]
паразит  07.06.2022, 20:22
[игнорируется]
basename  07.06.2022, 20:20
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
А что мне в данном случае даст right?
Иннер джоин
Хм, в муsql inner join -это просто join, а right - то же, что left, но наоборот. Он тоже outer. Если я правильно понял.
Да. По сути задачи нужен простой джоин. Но для направления оптимизатора в нужную сторону возможны игры с лефт джоинами
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58552
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  07.06.2022, 20:35
[игнорируется]
basename  07.06.2022, 20:31
[игнорируется]
паразит  07.06.2022, 20:22
[игнорируется]
basename  07.06.2022, 20:20
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
...
А что мне в данном случае даст right?
Иннер джоин
Хм, в муsql inner join -это просто join, а right - то же, что left, но наоборот. Он тоже outer. Если я правильно понял.
basename  07.06.2022, 20:32
[игнорируется]
PaNik  07.06.2022, 20:28
[игнорируется]
паразит  07.06.2022, 20:25
[игнорируется]
basename  07.06.2022, 20:14
[игнорируется]
...
Что исходное в задаче, от чего ты оттадкиваешься, айди пользователя, его имя или ещё что-то?
Исходное (как я понял) - аттачи юзера
Ну а их выборка то на основе user_id
Ага, через таблицу с постами
Я вначале брал из таблицы user) херь вышла
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58555
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 20:37
[игнорируется]
PaNik  07.06.2022, 20:35
[игнорируется]
basename  07.06.2022, 20:31
[игнорируется]
паразит  07.06.2022, 20:22
[игнорируется]
basename  07.06.2022, 20:20
[игнорируется]
...
Иннер джоин
Хм, в муsql inner join -это просто join, а right - то же, что left, но наоборот. Он тоже outer. Если я правильно понял.
basename  07.06.2022, 20:32
[игнорируется]
PaNik  07.06.2022, 20:28
[игнорируется]
паразит  07.06.2022, 20:25
[игнорируется]
...
Исходное (как я понял) - аттачи юзера
Ну а их выборка то на основе user_id
Ага, через таблицу с постами
Я вначале брал из таблицы user) херь вышла
Все зависит от организации таблиц и индексов и работы оптимизатора. Может ему помочь надо.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58565
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
паразит  07.06.2022, 20:38
[игнорируется]
basename  07.06.2022, 20:37
[игнорируется]
PaNik  07.06.2022, 20:35
[игнорируется]
basename  07.06.2022, 20:31
[игнорируется]
паразит  07.06.2022, 20:22
[игнорируется]
...
Хм, в муsql inner join -это просто join, а right - то же, что left, но наоборот. Он тоже outer. Если я правильно понял.
basename  07.06.2022, 20:32
[игнорируется]
PaNik  07.06.2022, 20:28
[игнорируется]
...
Ну а их выборка то на основе user_id
Ага, через таблицу с постами
Я вначале брал из таблицы user) херь вышла
Все зависит от организации таблиц и индексов и работы оптимизатора. Может ему помочь надо.
Вот только без подсказок
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58566
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat2  07.06.2022, 19:45
[игнорируется]
Черт. Это же MySQl

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

LEFT OUTER JOIN

или

LEFT INNER JOIN
Outer как правило не нужен. Это лишнее слово.

LEFT INNER JOIN это нонсенс.

Бывают

Inner join
Left join
Right join
Full join
...
Рейтинг: 1 / 0
Нравится: a.v.z
Господа базоёбы, скок сюды
    #58570
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sparrow  07.06.2022, 20:43
[игнорируется]
cat2  07.06.2022, 19:45
[игнорируется]
Черт. Это же MySQl

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

LEFT OUTER JOIN

или

LEFT INNER JOIN
Outer как правило не нужен. Это лишнее слово.

LEFT INNER JOIN это нонсенс.

Бывают

Inner join
Left join
Right join
Full join
Ты ж спать должен
...
Рейтинг: 1 / 0
Нравится: PaNik
Господа базоёбы, скок сюды
    #58573
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это стандарты, и му sql их чтит и поддерживает.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58575
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паразит  07.06.2022, 20:46
[игнорируется]
Sparrow  07.06.2022, 20:43
[игнорируется]
cat2  07.06.2022, 19:45
[игнорируется]
Черт. Это же MySQl

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

LEFT OUTER JOIN

или

LEFT INNER JOIN
Outer как правило не нужен. Это лишнее слово.

LEFT INNER JOIN это нонсенс.

Бывают

Inner join
Left join
Right join
Full join
Ты ж спать должен
Да но что-то не спится
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58579
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sparrow  07.06.2022, 20:43
[игнорируется]
cat2  07.06.2022, 19:45
[игнорируется]
Черт. Это же MySQl

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

LEFT OUTER JOIN

или

LEFT INNER JOIN
Outer как правило не нужен. Это лишнее слово.

LEFT INNER JOIN это нонсенс.

Бывают

Inner join
Left join
Right join
Full join
Вроде в mysql их 3
- join Inner
- left outer
- right outer
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58580
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sparrow  07.06.2022, 20:48
[игнорируется]
паразит  07.06.2022, 20:46
[игнорируется]
Sparrow  07.06.2022, 20:43
[игнорируется]
cat2  07.06.2022, 19:45
[игнорируется]
Черт. Это же MySQl

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

LEFT OUTER JOIN

или

LEFT INNER JOIN
Outer как правило не нужен. Это лишнее слово.

LEFT INNER JOIN это нонсенс.

Бывают

Inner join
Left join
Right join
Full join
Ты ж спать должен
Да но что-то не спится
Надо куйню скучную по телеку начать смотреть, помогает, я сейчас так и сделаю
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58583
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 20:51
[игнорируется]
Sparrow  07.06.2022, 20:43
[игнорируется]
cat2  07.06.2022, 19:45
[игнорируется]
Черт. Это же MySQl

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

LEFT OUTER JOIN

или

LEFT INNER JOIN
Outer как правило не нужен. Это лишнее слово.

LEFT INNER JOIN это нонсенс.

Бывают

Inner join
Left join
Right join
Full join
Вроде в mysql их 3
- join Inner
- left outer
- right outer
https://dev.mysql.com/doc/refman/8.0/en/join.html
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58605
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 20:51
[игнорируется]
Sparrow  07.06.2022, 20:43
[игнорируется]
cat2  07.06.2022, 19:45
[игнорируется]
Черт. Это же MySQl

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

LEFT OUTER JOIN

или

LEFT INNER JOIN
Outer как правило не нужен. Это лишнее слово.

LEFT INNER JOIN это нонсенс.

Бывают

Inner join
Left join
Right join
Full join
Вроде в mysql их 3
- join Inner
- left outer
- right outer
Это жуть. По стандартам sql не помню каким Толи 72 Толи позже

Бязя, тебе нужно понять что такое null в колонке, тогда поймёшь

Все соединение
Левое соединение
Правое соединение
Полное соединение

Получится разное количество строк с null в значениях.
Но все равно в
left join
Right join
Full join

Порождают дубли , с null , просто это разные соединения таблиц
,
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58609
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 20:54
[игнорируется]
basename  07.06.2022, 20:51
[игнорируется]
Sparrow  07.06.2022, 20:43
[игнорируется]
cat2  07.06.2022, 19:45
[игнорируется]
Черт. Это же MySQl

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

LEFT OUTER JOIN

или

LEFT INNER JOIN
Outer как правило не нужен. Это лишнее слово.

LEFT INNER JOIN это нонсенс.

Бывают

Inner join
Left join
Right join
Full join
Вроде в mysql их 3
- join Inner
- left outer
- right outer
https://dev.mysql.com/doc/refman/8.0/en/join.html
Там или между left и right вместе нельзя
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58614
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sparrow  07.06.2022, 21:09
[игнорируется]
basename  07.06.2022, 20:51
[игнорируется]
Sparrow  07.06.2022, 20:43
[игнорируется]
cat2  07.06.2022, 19:45
[игнорируется]
Черт. Это же MySQl

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

LEFT OUTER JOIN

или

LEFT INNER JOIN
Outer как правило не нужен. Это лишнее слово.

LEFT INNER JOIN это нонсенс.

Бывают

Inner join
Left join
Right join
Full join
Вроде в mysql их 3
- join Inner
- left outer
- right outer
Это жуть. По стандартам sql не помню каким Толи 72 Толи позже

Бязя, тебе нужно понять что такое null в колонке, тогда поймёшь

Все соединение
Левое соединение
Правое соединение
Полное соединение

Получится разное количество строк с null в значениях.
Но все равно в
left join
Right join
Full join

Порождают дубли , с null , просто это разные соединения таблиц
,
Да null я отфильтровал, is not null. Null - это нормально, если я правильно понял.

Вначале другие дубли были. Сабжевый запрос без дублей вроде работает.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58646
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 21:14
[игнорируется]
Sparrow  07.06.2022, 21:09
[игнорируется]
basename  07.06.2022, 20:51
[игнорируется]
Sparrow  07.06.2022, 20:43
[игнорируется]
cat2  07.06.2022, 19:45
[игнорируется]
...
Outer как правило не нужен. Это лишнее слово.

LEFT INNER JOIN это нонсенс.

Бывают

Inner join
Left join
Right join
Full join
Вроде в mysql их 3
- join Inner
- left outer
- right outer
Это жуть. По стандартам sql не помню каким Толи 72 Толи позже

Бязя, тебе нужно понять что такое null в колонке, тогда поймёшь

Все соединение
Левое соединение
Правое соединение
Полное соединение

Получится разное количество строк с null в значениях.
Но все равно в
left join
Right join
Full join

Порождают дубли , с null , просто это разные соединения таблиц
,
Да null я отфильтровал, is not null. Null - это нормально, если я правильно понял.

Вначале другие дубли были. Сабжевый запрос без дублей вроде работает.
Тебе надо понять нужен тебе left join или не нужен? Это разные штуки, может тебе надо inner join.
Как сат2 советовал. Это зависит от структуры базы , и чего тебе надо.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58665
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, но как оно связано с джойном и лефт джойном, мне понять не суждено.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58666
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паразит [игнорируется] 

Что то я пошел спать, базе надо какие-нибудь курсы пройти про скуэль.
Про 3 нормальных формах. А можно и про 4-5.
Мне Като втирали про 6 я не вник.

Говорят есть 7-8 но это чистая математика, для задротов
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58667
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sparrow  07.06.2022, 21:22
[игнорируется]
basename  07.06.2022, 21:14
[игнорируется]
Sparrow  07.06.2022, 21:09
[игнорируется]
basename  07.06.2022, 20:51
[игнорируется]
Sparrow  07.06.2022, 20:43
[игнорируется]
...
Вроде в mysql их 3
- join Inner
- left outer
- right outer
Это жуть. По стандартам sql не помню каким Толи 72 Толи позже

Бязя, тебе нужно понять что такое null в колонке, тогда поймёшь

Все соединение
Левое соединение
Правое соединение
Полное соединение

Получится разное количество строк с null в значениях.
Но все равно в
left join
Right join
Full join

Порождают дубли , с null , просто это разные соединения таблиц
,
Да null я отфильтровал, is not null. Null - это нормально, если я правильно понял.

Вначале другие дубли были. Сабжевый запрос без дублей вроде работает.
Тебе надо понять нужен тебе left join или не нужен? Это разные штуки, может тебе надо inner join.
Как сат2 советовал. Это зависит от структуры базы , и чего тебе надо.
Ок. Я напишу подробно потом, приложу описания дедотаблиц.

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

Чего там прикладывать?
Лефт везде убери, раз тебе атачменты нужны.
С лефт джойном.
Ты берёшь, получаешь все посты пользователя и пришпандориваешь аттачи к тем постам, где они есть, вот тебе и дубли.
Туда же ещё и темы пришпандориваешь так же.

Смысла лефт джойна тем и постов нет, потому что темя с постами связаны по любому. А так как тебе надо только посты с аттачами, то и смысла лефт джойна с аттачами тоже нет.
ЗЫ но я не так лефты пишу, раз он левый то присобачиваемую таблицу пишу слева от знака =. Типа эстет.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58692
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
блядь, просто йобаная классика

Именно для таких долбойобов я пишу статьи, но долбойобы, разумеется, хуй их читают
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58693
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  07.06.2022, 21:37
[игнорируется]
basename [игнорируется] 

Чего там прикладывать?
Лефт везде убери, раз тебе атачменты нужны.
С лефт джойном.
Ты берёшь, получаешь все посты пользователя и пришпандориваешь аттачи к тем постам, где они есть, вот тебе и дубли.
Туда же ещё и темы пришпандориваешь так же.

Смысла лефт джойна тем и постов нет, потому что темя с постами связаны по любому. А так как тебе надо только посты с аттачами, то и смысла лефт джойна с аттачами тоже нет.
ЗЫ но я не так лефты пишу, раз он левый то присобачиваемую таблицу пишу слева от знака =. Типа эстет.
Почему нет? К таблице с постами присоединяем аттачи, потом таблицу с топиками. Из аттачей берём имя аттача, из топиков - id топика и форумный.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58694
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tammy Jo Saint Cloud  07.06.2022, 21:41
[игнорируется]
блядь, просто йобаная классика

Именно для таких долбойобов я пишу статьи, но долбойобы, разумеется, хуй их читают
Где можно прочитать твою статью? Я долбоеб. С sql не связан.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58697
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 21:41
[игнорируется]
Почему нет?
Потому что лефт покажет записи из постов даже те, у которых нет аттачей.
Зачем тебе они, если ты аттачи ищешь?
И зачем тебе показывать посты, которые не привязаны к топикам (с лефтом именно так ты и делаешь), если это как минимум странно? Как там планы в таком случае это майскуль построит ХЗ.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58699
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename [игнорируется] 

И я не уверен, что твоё условие attach.name is not null имеет смысл, как я понимаю у деды любой аттач имеет имя.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58701
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  07.06.2022, 21:44
[игнорируется]
basename  07.06.2022, 21:41
[игнорируется]
Почему нет?
Потому что лефт покажет записи из постов даже те, у которых нет аттачей.
Зачем тебе они, если ты аттачи ищешь?
И зачем тебе показывать посты, которые не привязаны к топикам (с лефтом именно так ты и делаешь), если это как минимум странно? Как там планы в таком случае это майскуль построит ХЗ.
А… понял. Тупой сука. Он же все равно сканит таблицу полностью, потом селект делает. Так?

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

И я не уверен, что твоё условие attach.name is not null имеет смысл, как я понимаю у деды любой аттач имеет имя.
Без него просто показывает в столбце - null.

Короче, примеры надо показывать.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58705
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 21:46
[игнорируется]
Он же все равно сканит таблицу полностью, потом селект делает. Так?
ХЗ.
По уму может выбрать посты по юзер_ид, а потом уже к ним присоединить всё остальное.
В любом случае, если ты ищешь аттачи, то лефт убирай.
Ну я я бы всё равно начал с аттачей,как бы привык начинать оттуда, что ищу.
Что-то вроде
Код: SQL
1.
2.
3.
4.
select v1_post.id, v1_post.user_id, v1_post.author, v1_topic.forum_id, v1_post.topic_id, v1_attachment.name
from v1_attachment
join v1_post on v1_post.id = v1_attachment.post_id and v1_post.user_id = '173'
join v1_topic on v1_topic.id = v1_post.topic_id;
...
Изменено: 07.06.2022, 21:52 - Горбатый ёж
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58707
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  07.06.2022, 21:49
[игнорируется]
Горбатый ёж  07.06.2022, 21:45
[игнорируется]
basename [игнорируется] 

И я не уверен, что твоё условие attach.name is not null имеет смысл, как я понимаю у деды любой аттач имеет имя.
Без него просто показывает в столбце - null.

Короче, примеры надо показывать.
О как...
Значит я ошибаюсь.

Потому что лефт джойн используется.
...
Изменено: 07.06.2022, 21:52 - Горбатый ёж
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #58726
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Горбатый ёж  07.06.2022, 21:37
[игнорируется]
basename [игнорируется] 

Чего там прикладывать?
Лефт везде убери, раз тебе атачменты нужны.
С лефт джойном.
Ты берёшь, получаешь все посты пользователя и пришпандориваешь аттачи к тем постам, где они есть, вот тебе и дубли.
Туда же ещё и темы пришпандориваешь так же.

Смысла лефт джойна тем и постов нет, потому что темя с постами связаны по любому. А так как тебе надо только посты с аттачами, то и смысла лефт джойна с аттачами тоже нет.
ЗЫ но я не так лефты пишу, раз он левый то присобачиваемую таблицу пишу слева от знака =. Типа эстет.
Теоретег детектед. Таблица постов самая здоровая (овердохуя записей относительно остальных таблиц), в случае иннер джоина условия соединения равносильны условиям в предложении where и оптимизатор может снача на сотни тысяч записей в таблице постов начать джоинить другие таблицы, что может потребовать выделения значительного объема ОЗУ и сброса результата в tempdb, что не есть продуктивно.
У Бази в первоначальном запросе на таблицу постов накладывается ограничение по юзер_ид, что в случае индекса по юзер_ид инклуде (пост_ид, топик_ид) сведётся к поиску по индексу для выделения постов автора и джоину по относительно небольшому числу постов конкретного юзера. Правда у него тогда в where мешает условие на is not null для вложения.

З.ы. нет планов - нет аналитики.
З.з.ы. вышеописанное применительно к ms sql, чего там с оптимизатором mysql - я хз
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58728
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Горбатый ёж  07.06.2022, 21:44
[игнорируется]
Потому что лефт покажет записи из постов даже те, у которых нет аттачей.
У Бази условие в where на is not null для поля таблицы из left join
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58729
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Горбатый ёж  07.06.2022, 21:45
[игнорируется]
basename [игнорируется] 

И я не уверен, что твоё условие attach.name is not null имеет смысл, как я понимаю у деды любой аттач имеет имя.
Условие в предложении where, а не в on соединения [:ireful]
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58731
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
basename  07.06.2022, 21:46
[игнорируется]
Горбатый ёж  07.06.2022, 21:44
[игнорируется]
basename  07.06.2022, 21:41
[игнорируется]
Почему нет?
Потому что лефт покажет записи из постов даже те, у которых нет аттачей.
Зачем тебе они, если ты аттачи ищешь?
И зачем тебе показывать посты, которые не привязаны к топикам (с лефтом именно так ты и делаешь), если это как минимум странно? Как там планы в таком случае это майскуль построит ХЗ.
А… понял. Тупой сука. Он же все равно сканит таблицу полностью, потом селект делает. Так?

Он все присоединил вначале, потом просто отобразил, что попросили.
Йожег попутал, у тебя is not null в where, а не в on
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58746
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #58757
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
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
Господа базоёбы, скок сюды
    #58775
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
basename  07.06.2022, 21:42
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 21:41
[игнорируется]
блядь, просто йобаная классика

Именно для таких долбойобов я пишу статьи, но долбойобы, разумеется, хуй их читают
Где можно прочитать твою статью? Я долбоеб. С sql не связан.
на профильных сайтах в интернетах (С)
Там моя подпись, так чот ищи сам

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

второй классический случай - использование дистинкта при неправильной работе с мастер-слейв
вместо того чтобы юзать exists (который на самом деле нужен), некто юзает джойн со слейвом, получает мультипликацию хедера, пугается и пиздячит туда дистинкт

На самом деле для разовых запросов - практически похуй как ты что там пишешь. Ну поебётся сервер минуту вместо того чтобы выполнить запрос за полсекунды - всем похуй, запрос разовый, лишь бы результат был правильный

но если запрос выполняется постоянно и многократно - то тут конечно приходтся смотреть как что писать
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58778
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
PaNik  07.06.2022, 22:01
[игнорируется]
в случае иннер джоина условия соединения равносильны условиям в предложении where и оптимизатор может снача на сотни тысяч записей в таблице постов начать джоинить другие таблицы, что может потребовать выделения значительного объема ОЗУ и сброса результата в tempdb, что не есть продуктивно.
штоблядьзанахуй??????

Простите, был напуган.

это бред, сорян. По крайней мере для скуля (судя по темпдб)
Для мелких серверов с хуевым оптмизатором - может быть правдой.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58780
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
PaNik  07.06.2022, 22:01
[игнорируется]
З.з.ы. вышеописанное применительно к ms sql, чего там с оптимизатором mysql - я хз
ага, таки скуль
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58781
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
PaNik  07.06.2022, 22:17
[игнорируется]
basename  07.06.2022, 22:12
[игнорируется]
PaNik  07.06.2022, 22:05
[игнорируется]
basename  07.06.2022, 21:46
[игнорируется]
Горбатый ёж  07.06.2022, 21:44
[игнорируется]
...
А… понял. Тупой сука. Он же все равно сканит таблицу полностью, потом селект делает. Так?

Он все присоединил вначале, потом просто отобразил, что попросили.
Йожег попутал, у тебя is not null в where, а не в on
Дык он с нулями выводил, я это и вставил. Правильно или нет - я хз. У вас спрашиваю.
С точки зрения запроса (того, что тебе нужно получить) - правильно.
Но открывает простор для действий оптимизатора, может пойти по неоптимальному пути (мой длинный пост выше) и отработать заметно медленнее с привлечением заметно большего числа ресурсов.

З.Ы. Нужны планы.
З.З.Ы. планы имеют тенденцию становиться неактуальными с увеличением числа записей.
58512
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58784
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat2  07.06.2022, 22:15
[игнорируется]
basename  07.06.2022, 22:12
[игнорируется]
PaNik  07.06.2022, 22:05
[игнорируется]
basename  07.06.2022, 21:46
[игнорируется]
Горбатый ёж  07.06.2022, 21:44
[игнорируется]
...
А… понял. Тупой сука. Он же все равно сканит таблицу полностью, потом селект делает. Так?

Он все присоединил вначале, потом просто отобразил, что попросили.
Йожег попутал, у тебя is not null в where, а не в on
Дык он с нулями выводил, я это и вставил. Правильно или нет - я хз. У вас спрашиваю.
Завязывай спрашивать, делай что советуют
Ок. Подробнее обрисую, подробнее рассмотрим. Я просто запрос сделал согласно доке mysql.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58785
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
basename  07.06.2022, 22:29
[игнорируется]
cat2  07.06.2022, 22:15
[игнорируется]
basename  07.06.2022, 22:12
[игнорируется]
PaNik  07.06.2022, 22:05
[игнорируется]
basename  07.06.2022, 21:46
[игнорируется]
...
Йожег попутал, у тебя is not null в where, а не в on
Дык он с нулями выводил, я это и вставил. Правильно или нет - я хз. У вас спрашиваю.
Завязывай спрашивать, делай что советуют
Ок. Подробнее обрисую, подробнее рассмотрим. Я просто запрос сделал согласно доке mysql.
С точки зрения поставленной задачи (выбрать все аттачменты юзера) запрос в стартовом посте корректен
...
Изменено: 07.06.2022, 22:31 - PaNik
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58786
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
basename  07.06.2022, 19:34
[игнорируется]
вначале у меня какие-то дубли получались
какие дубли получались? когда у тебя на один пост было несколько аттачей?

так вроде и задача была " нужно выводить список вложений" - значит ты мог получить в одной теме несколько постов - если в посте было несколько аттачей
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58789
папа акуз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tammy Jo Saint Cloud  07.06.2022, 22:25
[игнорируется]
basename  07.06.2022, 21:42
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 21:41
[игнорируется]
блядь, просто йобаная классика

Именно для таких долбойобов я пишу статьи, но долбойобы, разумеется, хуй их читают
Где можно прочитать твою статью? Я долбоеб. С sql не связан.
на профильных сайтах в интернетах (С)
Там моя подпись, так чот ищи сам

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

второй классический случай - использование дистинкта при неправильной работе с мастер-слейв
вместо того чтобы юзать exists (который на самом деле нужен), некто юзает джойн со слейвом, получает мультипликацию хедера, пугается и пиздячит туда дистинкт

На самом деле для разовых запросов - практически похуй как ты что там пишешь. Ну поебётся сервер минуту вместо того чтобы выполнить запрос за полсекунды - всем похуй, запрос разовый, лишь бы результат был правильный

но если запрос выполняется постоянно и многократно - то тут конечно приходтся смотреть как что писать
хуяссе... почти зауважал... правильные вещи говоришь, кэп!
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58893
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ изголодался по сиквелу, передуны старые. Задачка наипростецкая для студента первокурсника на зачёт в первом семестре.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58894
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sparrow [игнорируется] 

Доброе утро. Я проснулся семь часов поспал, очень хорошо!
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58895
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паразит  08.06.2022, 04:42
[игнорируется]
Sparrow [игнорируется] 

Доброе утро. Я проснулся семь часов поспал, очень хорошо!
Привет, я тоже давно не сплю.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58896
Артефакт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
а я не спал всю ночь
но на скуль не тянет хотя и базоеб
...
Рейтинг: 1 / 0
Нравится: PaNik
Господа базоёбы, скок сюды
    #58897
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sparrow  08.06.2022, 05:25
[игнорируется]
паразит  08.06.2022, 04:42
[игнорируется]
Sparrow [игнорируется] 

Доброе утро. Я проснулся семь часов поспал, очень хорошо!
Привет, я тоже давно не сплю.
Начинается обычный день, все по графику.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58898
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артефакт  08.06.2022, 05:32
[игнорируется]
а я не спал всю ночь
но на скуль не тянет хотя и базоеб
У тебя неправильный график. Пиво пил накануне?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58899
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Артефакт  08.06.2022, 05:32
[игнорируется]
а я не спал всю ночь
но на скуль не тянет хотя и базоеб
Та же фигня
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58905
Артефакт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
ничего не пил - проспал до 16 потом не спится
когда пью пиво сплю хорошо
сегодня схожу за пивом
но придется подождать до 11 когда наливайка откроется
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58926
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat2  07.06.2022, 22:00
[игнорируется]
Горбатый ёж  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 - только те, у которых есть аттачменты
При чём здесь условие на поле name в общем случае?
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58927
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  07.06.2022, 22:01
[игнорируется]
У Бази в первоначальном запросе на таблицу постов накладывается ограничение по юзер_ид
А я предложил его убрать?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58928
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tammy Jo Saint Cloud  07.06.2022, 22:31
[игнорируется]
значит ты мог получить в одной теме несколько постов - если в посте было несколько аттачей
Сомневаюсь, что у деды все аттачи в посте имеют одинаковые наименования.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58932
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  08.06.2022, 08:09
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 22:31
[игнорируется]
значит ты мог получить в одной теме несколько постов - если в посте было несколько аттачей
Сомневаюсь, что у деды все аттачи в посте имеют одинаковые наименования.
Ждите 39 минут и разберёте эту задачку
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #58938
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  08.06.2022, 08:14
[игнорируется]
Горбатый ёж  08.06.2022, 08:09
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 22:31
[игнорируется]
значит ты мог получить в одной теме несколько постов - если в посте было несколько аттачей
Сомневаюсь, что у деды все аттачи в посте имеют одинаковые наименования.
Ждите 39 минут и разберёте эту задачку
Я уже работать уйду.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59043
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  08.06.2022, 08:04
[игнорируется]
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
ну не такой уж хитрый, но направляет оптимизатор в нужном направлении. Я с ораклом с 10-ки не работал, сейчас его оптимизатор научился такой лайфхак разжевывать в иннер джойн?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59057
Артефакт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
чтобы понять что происходит без плана не получится
...
Рейтинг: 1 / 0
Нравится: PaNik
Господа базоёбы, скок сюды
    #59063
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паразит  08.06.2022, 10:36
[игнорируется]
Горбатый ёж  08.06.2022, 08:04
[игнорируется]
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
ну не такой уж хитрый, но направляет оптимизатор в нужном направлении. Я с ораклом с 10-ки не работал, сейчас его оптимизатор научился такой лайфхак разжевывать в иннер джойн?
Понятия не имею, я такие запросы не пишу.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59066
Артефакт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
v1_post.user_id = '173'
может быть табле скан и индекс сик
почуствуйте разницу
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59074
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
W  08.06.2022, 10:55
[игнорируется]
паразит  07.06.2022, 19:50
[игнорируется]
Так-то лефтами можно выстраивать порядок соединения выборки
нихуя
нихуя подобного
еббадь
Он прав, можно, но не только лефтами и было это давно.
Впрочем сейчас тоже есть возможность включить сию заебатую возможность используя хинт.
ЗЫ сцуко, как же меня заебал этот хинт во всех подряд запросах, даже если там всего 2 таблицы соединяются.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59077
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
W  08.06.2022, 10:58
[игнорируется]
это пидорская техника
зачем быть пидором?
В моём случае это наследие от которого я избавляюсь, где встречаю.
Пока ни один ревьювер не завернул конкретно это исправление.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59079
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё не очень понятно, зачем значение для user_id передавать в апострофах? Если это число, то и передавать его числом.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59108
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
W  08.06.2022, 10:55
[игнорируется]
паразит  07.06.2022, 19:50
[игнорируется]
Так-то лефтами можно выстраивать порядок соединения выборки
нихуя
нихуя подобного
еббадь
твой опыт мал
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59113
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
W  08.06.2022, 10:49
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 21:41
[игнорируется]
Именно для таких долбойобов я пишу статьи
иди нахуй пидор
С
На, у тебя отвалилось
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59117
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  08.06.2022, 11:01
[игнорируется]
Ещё не очень понятно, зачем значение для user_id передавать в апострофах? Если это число, то и передавать его числом.
интересно, дед сам таблицы клепал? может там тип чар у паля заипенел
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59131
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паразит  08.06.2022, 11:15
[игнорируется]
может там тип чар у паля заипенел
Может и так.
Но мне кажется это базя просто перестраховался или пример неправильно понял.
Скорее всего для id дед использовал автоинкрементное поле, но оно вряд ли строковое.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59204
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
W  08.06.2022, 11:48
[игнорируется]
Tammy Jo Saint Cloud  08.06.2022, 11:15
[игнорируется]
W  08.06.2022, 10:49
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 21:41
[игнорируется]
Именно для таких долбойобов я пишу статьи
иди нахуй пидор
С
На, у тебя отвалилось
песа, ты же знаешь что обоссан
зачем ты востал против элиты?
ты не "элита", ты говно
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59206
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
это поше или очередное его подрожалово?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59213
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tammy Jo Saint Cloud  08.06.2022, 12:30
[игнорируется]
это поше или очередное его подрожалово?
Пашка не такой борзый
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59257
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Горбатый ёж  08.06.2022, 08:04
[игнорируется]
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
Чего???
Почему не работает???
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59261
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Горбатый ёж  08.06.2022, 10:57
[игнорируется]
включить сию заебатую возможность используя хинт.
Ога, блеать, навтыкают хинтов, потом таблица разрастается и наступает пиздец
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59304
9288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tammy Jo Saint Cloud  07.06.2022, 22:25
[игнорируется]
basename  07.06.2022, 21:42
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 21:41
[игнорируется]
блядь, просто йобаная классика

Именно для таких долбойобов я пишу статьи, но долбойобы, разумеется, хуй их читают
Где можно прочитать твою статью? Я долбоеб. С sql не связан.
на профильных сайтах в интернетах (С)
Там моя подпись, так чот ищи сам

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

второй классический случай - использование дистинкта при неправильной работе с мастер-слейв
вместо того чтобы юзать exists (который на самом деле нужен), некто юзает джойн со слейвом, получает мультипликацию хедера, пугается и пиздячит туда дистинкт

На самом деле для разовых запросов - практически похуй как ты что там пишешь. Ну поебётся сервер минуту вместо того чтобы выполнить запрос за полсекунды - всем похуй, запрос разовый, лишь бы результат был правильный

но если запрос выполняется постоянно и многократно - то тут конечно приходтся смотреть как что писать
Дохтур?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59323
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
9288  08.06.2022, 13:57
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 22:25
[игнорируется]
basename  07.06.2022, 21:42
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 21:41
[игнорируется]
блядь, просто йобаная классика

Именно для таких долбойобов я пишу статьи, но долбойобы, разумеется, хуй их читают
Где можно прочитать твою статью? Я долбоеб. С sql не связан.
на профильных сайтах в интернетах (С)
Там моя подпись, так чот ищи сам

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

второй классический случай - использование дистинкта при неправильной работе с мастер-слейв
вместо того чтобы юзать exists (который на самом деле нужен), некто юзает джойн со слейвом, получает мультипликацию хедера, пугается и пиздячит туда дистинкт

На самом деле для разовых запросов - практически похуй как ты что там пишешь. Ну поебётся сервер минуту вместо того чтобы выполнить запрос за полсекунды - всем похуй, запрос разовый, лишь бы результат был правильный

но если запрос выполняется постоянно и многократно - то тут конечно приходтся смотреть как что писать
Дохтур?
хаус? как раз досматриваю 21 серию 8го сезона
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59335
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  08.06.2022, 13:23
[игнорируется]
Горбатый ёж  08.06.2022, 08:04
[игнорируется]
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
Чего???
Почему не работает???
Потому что в общем случае поле name в таблице аттачментов может быть null и ты потеряешь аттачмент.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59339
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Горбатый ёж  08.06.2022, 14:24
[игнорируется]
PaNik  08.06.2022, 13:23
[игнорируется]
Горбатый ёж  08.06.2022, 08:04
[игнорируется]
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
Чего???
Почему не работает???
Потому что в общем случае поле name в таблице аттачментов может быть null и ты потеряешь аттачмент.
Там имя файла с аттачментом. Если там null - аттачмента нет.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59344
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  08.06.2022, 14:27
[игнорируется]
Там имя файла с аттачментом. Если там null - аттачмента нет.
Откуда ты знаешь все общие случаи?
А что делать, если аттачмент в систему приаттачивается посредством православного копипаста, который о опять таки в общем случае может не иметь никакого имени файла (в отличии от богомерзкого драгэндропа)?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59356
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Горбатый ёж  08.06.2022, 14:29
[игнорируется]
PaNik  08.06.2022, 14:27
[игнорируется]
Там имя файла с аттачментом. Если там null - аттачмента нет.
Откуда ты знаешь все общие случаи?
А что делать, если аттачмент в систему приаттачивается посредством православного копипаста, который о опять таки в общем случае может не иметь никакого имени файла (в отличии от богомерзкого драгэндропа)?
basename, что хранится в поле v1_attachment.name?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59359
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  08.06.2022, 14:39
[игнорируется]
Горбатый ёж  08.06.2022, 14:29
[игнорируется]
PaNik  08.06.2022, 14:27
[игнорируется]
Там имя файла с аттачментом. Если там null - аттачмента нет.
Откуда ты знаешь все общие случаи?
А что делать, если аттачмент в систему приаттачивается посредством православного копипаста, который о опять таки в общем случае может не иметь никакого имени файла (в отличии от богомерзкого драгэндропа)?
basename, что хранится в поле v1_attachment.name?
Какая разница, я изначально писал, что способ конечно рабочий, но не в общем случае.
И вообще использовать такое вместо простого джойна - это странно.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59371
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Горбатый ёж  08.06.2022, 14:40
[игнорируется]
PaNik  08.06.2022, 14:39
[игнорируется]
Горбатый ёж  08.06.2022, 14:29
[игнорируется]
PaNik  08.06.2022, 14:27
[игнорируется]
Там имя файла с аттачментом. Если там null - аттачмента нет.
Откуда ты знаешь все общие случаи?
А что делать, если аттачмент в систему приаттачивается посредством православного копипаста, который о опять таки в общем случае может не иметь никакого имени файла (в отличии от богомерзкого драгэндропа)?
basename, что хранится в поле v1_attachment.name?
Какая разница, я изначально писал, что способ конечно рабочий, но не в общем случае.
И вообще использовать такое вместо простого джойна - это странно.
Вполне рабочий вариант.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59394
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  08.06.2022, 14:49
[игнорируется]
Вполне рабочий вариант.
Не в общем случае.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59420
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Горбатый ёж  08.06.2022, 15:21
[игнорируется]
PaNik  08.06.2022, 14:49
[игнорируется]
Вполне рабочий вариант.
Не в общем случае.
"Общие случаи" часто пагубно сказываться на производительности в данном конкретном случае
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #59815
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  08.06.2022, 16:28
[игнорируется]
Горбатый ёж  08.06.2022, 15:21
[игнорируется]
PaNik  08.06.2022, 14:49
[игнорируется]
Вполне рабочий вариант.
Не в общем случае.
"Общие случаи" часто пагубно сказываться на производительности в данном конкретном случае
Интересно и как может пагубно сказаться на производительности замена left join на join?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60153
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
Горбатый ёж  09.06.2022, 08:15
[игнорируется]
PaNik  08.06.2022, 16:28
[игнорируется]
Горбатый ёж  08.06.2022, 15:21
[игнорируется]
PaNik  08.06.2022, 14:49
[игнорируется]
Вполне рабочий вариант.
Не в общем случае.
"Общие случаи" часто пагубно сказываться на производительности в данном конкретном случае
Интересно и как может пагубно сказаться на производительности замена left join на join?
завиисит от
в общему случае для скуля (а не мускуля) существуют варианты, когда такая замена влияет на производительность

в случае с мелкими базами (мускул, постгре, мария, фиребёрд, етк) изменеие производительности может быть из-за оптимизатора, когда при преобразовании AST для разных кейсов используются разные "костыльные" ветки оптимизатора.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60156
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tammy Jo Saint Cloud  09.06.2022, 14:41
[игнорируется]
постгре
Эта не мелкая.
И всё равно я сомневаюсь, что замена left join на join может вызвать деградацию.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60158
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  09.06.2022, 14:36
[игнорируется]
Я так и не понял до сих пор чем плох конкретно мой запрос.
Тем, что ты используешь left join.
Тебе он не нужен, потому что ты ищешь вложения.
Замени left join на join и убери условие name is not null.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60159
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  09.06.2022, 14:47
[игнорируется]
basename  09.06.2022, 14:36
[игнорируется]
Я так и не понял до сих пор чем плох конкретно мой запрос.
Тем, что ты используешь left join.
Тебе он не нужен, потому что ты ищешь вложения.
Замени left join на join и убери условие name is not null.
ага, уже сделал. постом выше
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60166
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename [игнорируется] 

id пользователя указывай без апострофов, копейки конечно, но мало ли.
В апострофах строковые данные пишутся, а id там int.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60168
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  09.06.2022, 14:52
[игнорируется]
basename [игнорируется] 

id пользователя указывай без апострофов, копейки конечно, но мало ли.
В апострофах строковые данные пишутся, а id там int.
ок, спасибо
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60171
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно поле name может быть null в аттачментах, поэтому с точки зрения БД ограничение name is not null может привести к потере аттачментов.
В остальном так и есть, простыми джойнами соединять и нормально отработает, потому что аттачмент дожен быть привязан к посту, пост к топику, а топик к форуму, на полях там стоит признак not null.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60173
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename [игнорируется] 

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

на второй с простым join
pasted_image.png
pasted_image.png
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60205
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
Горбатый ёж  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

могут давать разный перформанс при разный случаях
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60224
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
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?
Планы разные.
По сути вопроса: вероятно, количество вложений подопытного несколько менее числа топиков, в которые он насрал.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60230
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
basename  09.06.2022, 15:30
[игнорируется]
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
Господа базоёбы, скок сюды
    #60233
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
basename  09.06.2022, 15:37
[игнорируется]
Tammy Jo Saint Cloud [игнорируется] 

Если я правильно понял, в сабжевом случае, согласно анализатору запроса, left join быстрее работает?
Выводи время исполнения для каждого запроса
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60242
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
basename  09.06.2022, 15:40
[игнорируется]
Блин, сложный ваш SQL.
Придрочиться можно.
basename  09.06.2022, 15:40
[игнорируется]
даже текущую задачу можно решить фиг знает сколькми способами.
Это норма.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60245
паразит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  09.06.2022, 15:40
[игнорируется]
Блин, сложный ваш SQL.
Скажешь тоже. Конфеты "подушечки" знаешь? Вот как туда повидлу засовывают, вот вопрос!
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60247
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
basename  09.06.2022, 15:43
[игнорируется]
PaNik  09.06.2022, 15:39
[игнорируется]
basename  09.06.2022, 15:30
[игнорируется]
basename  09.06.2022, 15:16
[игнорируется]
basename  09.06.2022, 15:13
[игнорируется]
...
Хм, а почему с join Query Cost больше, чем с Left Join?
Господа, проясните плиз за Query cost. Ведь значение больше, это хуже?
По планам порядок соединения таблиц разный.
Это реальный план выполнения или предполагаемый?
Вот ты спросил )))

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

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

Видимо, реальный
Ну в ms sql management studio 2 кнопки - предполагаемый план и реальный план.
По времени выполнения тоже смотреть желательно, а не только на стоимость.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60259
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
По сути Базя в 1-м посте получил готовый правильный результат, который имеем за разумное время. Запускать этот запрос с разными юзер_ид особо часто, как полагаю, не планируется.
Дальше холивар и возможные оптимизации [:smile]
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60264
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik [игнорируется] 

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

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

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

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

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

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

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

Одинаковое для обеих запросов
Размер таблиц небольшой
Правильно ли я понимаю, грубо говоря, в случае left join ему надо просто к большому куску надо присобачить ещё кусочек, а в случае join, отсечь ненужное из двух кусков и уже их склеить? тогда вроде бы логично, что join дороже и дольше должен выполняться?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60304
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
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 дороже и дольше должен выполняться?
нет и не всегда
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60308
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
cat2  09.06.2022, 16:24
[игнорируется]
Соединение будет происходить одинаково в обоих случаях, но LEFT, как правило, возвращает больше записей и поэтому выполняется медленнее
нет
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60313
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
basename  09.06.2022, 16:26
[игнорируется]
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
[игнорируется]
...
Размер таблиц небольшой
Правильно ли я понимаю, грубо говоря, в случае left join ему надо просто к большому куску надо присобачить ещё кусочек, а в случае join, отсечь ненужное из двух кусков и уже их склеить? тогда вроде бы логично, что join дороже и дольше должен выполняться?
нет и не всегда
+ ещё зависит от реализации в СУБД? MS SQL, MySQL, PostgreSQL, ORACLE?
очень сильно зависит
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60314
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Tammy Jo Saint Cloud  09.06.2022, 16:24
[игнорируется]
cat2  09.06.2022, 16:24
[игнорируется]
Соединение будет происходить одинаково в обоих случаях, но LEFT, как правило, возвращает больше записей и поэтому выполняется медленнее
нет
Обоснуй
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60315
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хуяссе планы...
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60316
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  09.06.2022, 16:28
[игнорируется]
Хуяссе планы...
что с ними не так? )
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60317
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  09.06.2022, 16:29
[игнорируется]
Горбатый ёж  09.06.2022, 16:28
[игнорируется]
Хуяссе планы...
что с ними не так? )
А есть текстовый вариант?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60319
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
cat2  09.06.2022, 16:27
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 16:24
[игнорируется]
cat2  09.06.2022, 16:24
[игнорируется]
Соединение будет происходить одинаково в обоих случаях, но LEFT, как правило, возвращает больше записей и поэтому выполняется медленнее
нет
Обоснуй
а что, и правда надо? это же знания из детского сада

ну ладно, что стар, что мал...

давайте на секундочку представим, что формальная запись запроса и правда отображает тот порядок, в котором "физически" соединятся таблицы при выполнении запроса

тогда для select * from Tab1 left join tab2 on a=b будет один вариант соединения - мы идем по Таб1 и лепим к ней Таб2
а вот для select * from Tab1 left INNER join tab2 on a=b будет уже 2 варианта - идти по таб1 и лепить таб2 - или идти по таб2 и лепить к ней таб1
таким образом "Одинаково в обоих случаях" - немного неправильно.

Второй момент - "лефт выполнятеся быстрее, т.к." - во первых не всегда "больше записей" (и как правило - ровно столько же записей - или даже МЕНЬШЕ)
во вторых (зависит от случая) лефт может (и будет) читать с диска меньше данных для "правой" таблицы - следовательно, сам по себе запро будет выполнятся быстрее
Ну и в некоторых случаях лефт все таки возвращает МЕНЬШЕ записей, чем иннер.

upd поправил второй запрос, скопипастил и не заменил лефт на иннер
...
Изменено: 09.06.2022, 16:34 - Tammy Jo Saint Cloud
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60320
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tammy Jo Saint Cloud  09.06.2022, 16:31
[игнорируется]
давайте на секундочку представим, что формальная запись запроса и правда отображает тот порядок, в котором "физически" соединятся таблицы при выполнении запроса
Это что за древняя СУБД?
Или это любители хинтовать запросы?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60322
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
Горбатый ёж  09.06.2022, 16:34
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 16:31
[игнорируется]
давайте на секундочку представим, что формальная запись запроса и правда отображает тот порядок, в котором "физически" соединятся таблицы при выполнении запроса
Это что за древняя СУБД?
Или это любители хинтовать запросы?
йобаный блядь в рот....
"ДАвайте ПРЕДСТАВИМ", для целей демонстрации
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60323
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  09.06.2022, 16:34
[игнорируется]
В тектовом виде такое.

Оно? или что должно быть?
Оно.
Но прям такое впечатление, что оптимизатору похую, что джойн, что лефт джойн.
Tammy Jo Saint Cloud  09.06.2022, 16:35
[игнорируется]
"ДАвайте ПРЕДСТАВИМ"
Это пагубный подход в обучении.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60326
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
Горбатый ёж  09.06.2022, 16:38
[игнорируется]
Это пагубный подход в обучении.
нормальный подход, от простого к сложному, от частного к общему
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60328
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat2  09.06.2022, 16:39
[игнорируется]
Если у нас таблицы Post и Attachment, то в Post должен быть индекс по Attachment_Id.
В данной ситуации всё совсем наебарот.
cat2  09.06.2022, 16:39
[игнорируется]
Не думаю, что кто-нибудь будет такой индекс делать
Нормальный человек будет делать индекс на FK.
...
Рейтинг: 1 / 0
Нравится: PaNik
Господа базоёбы, скок сюды
    #60331
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
cat2  09.06.2022, 16:39
[игнорируется]
Второй вариант может выполнятся или на коротких таблицах, когда оптимизатор решит, что использовать индексы тут нет нужды, или когда в первой таблице есть индекс по полю второй таблицы.
што блядь?
Я могу показать как минимум несколько вариантов - с большими таблицами, с маленькими, с индексами, без индексов и так далее.

"второй вариант" показывает, что план выполнения иннер джойна может варьироваться по последовательности соединений
(лефт тоже может,но для простоты мы это не учитываем)
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60332
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
Горбатый ёж  09.06.2022, 16:41
[игнорируется]
Нормальный человек будет делать индекс на FK.
Очень сильно зависит от.
В некоторых случаях нормальный человек НИКОГДА не будет делать индекс на ФК
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60335
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tammy Jo Saint Cloud  09.06.2022, 16:43
[игнорируется]
В некоторых случаях нормальный человек НИКОГДА не будет делать индекс на ФК
Случаи в студию.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60337
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Tammy Jo Saint Cloud  09.06.2022, 16:43
[игнорируется]
cat2  09.06.2022, 16:39
[игнорируется]
Второй вариант может выполнятся или на коротких таблицах, когда оптимизатор решит, что использовать индексы тут нет нужды, или когда в первой таблице есть индекс по полю второй таблицы.
што блядь?
Я могу показать как минимум несколько вариантов - с большими таблицами, с маленькими, с индексами, без индексов и так далее.

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

Я тоже могу придумать способ, когда никаких индексов нет и INNER с OUTER будут выполнятся за одно и тоже время.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60339
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Tammy Jo Saint Cloud  09.06.2022, 16:43
[игнорируется]
Горбатый ёж  09.06.2022, 16:41
[игнорируется]
Нормальный человек будет делать индекс на FK.
Очень сильно зависит от.
В некоторых случаях нормальный человек НИКОГДА не будет делать индекс на ФК
О, господи! Откуда этот придурок на нас свалился!
Дофига способов построить кривую базу, но вовсе не надо применять их всех!
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #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
Господа базоёбы, скок сюды
    #60574
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tammy Jo Saint Cloud  09.06.2022, 21:54
[игнорируется]
Одного достаточно, нет? :)
Этот я знаю.
А хочется расширять горизонты своих знаний, может пригодиться же.
Есть ещё какие-то варианты?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60778
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
Горбатый ёж  10.06.2022, 08:34
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 21:54
[игнорируется]
Одного достаточно, нет? :)
Этот я знаю.
А хочется расширять горизонты своих знаний, может пригодиться же.
Есть ещё какие-то варианты?
других особо не встречал, за исключение "отложенных индексов" - в случаях, когда потенциально индекс может пригодится, но пока не нужен - потому его или вообще не создают, либо создают задизейбленным (но это тот еще гемор)

В системах ЕТЛ/ДВХ тоже может быть - но это вариация вышеописанного случая с аналитикой, да и вообще там ФК не делают, ибо нефиг.
...
Рейтинг: 1 / 0
Нравится: Горбатый ёж
Господа базоёбы, скок сюды
    #60797
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat2  09.06.2022, 17:32
[игнорируется]
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
В общем, из всех запросов, вот эти два меньше по стоимости и выполняются быстрее

Один стартовый, второй - твой

Твой как-то выглядит пологичнее, что-ли. объеденить и получить поле с topic id, а потом уже аттачменты прихуячить.

Но вот, как заметно стало, почему то если на табличку с вложениями натравиливать просто join, а не left,то запрос выполняется дольше. И я не понимаю, почему, исходя из execution plan он в случае с join где-то нарыл в два раза больше строк
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
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;

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;
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60815
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
basename [игнорируется] 

Я бы хотел глянуть какие индексы навешаны на таблицы.
...
Рейтинг: 1 / 0
Нравится: PaNik
Господа базоёбы, скок сюды
    #60824
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat2  10.06.2022, 13:21
[игнорируется]
basename [игнорируется] 

Я бы хотел глянуть какие индексы навешаны на таблицы.
Это?
Код
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.
mysql> show indexes from v1_post;
+---------+------------+--------------------------------+--------------+--------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table   | Non_unique | Key_name                       | Seq_in_index | Column_name        | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+---------+------------+--------------------------------+--------------+--------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| v1_post |          0 | PRIMARY                        |            1 | id                 | A         |       47646 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_is_deleted_idx         |            1 | deleted            | A         |           1 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_user_id_idx            |            1 | user_id            | A         |         161 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_topic_id_idx           |            1 | topic_id           | A         |        1869 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_has_attachment_idx     |            1 | has_attachment     | A         |           6 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_has_attachment_ref_idx |            1 | has_attachment_ref | A         |           1 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_ip_idx                 |            1 | ip                 | A         |        2499 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_rm_idx                 |            1 | read_marker        | A         |         144 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_author_idx             |            1 | author             | A         |         136 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_creation_date_idx      |            1 | creation_date      | A         |       49578 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_is_pinned_idx          |            1 | pinned             | A         |           1 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_user_marker_idx        |            1 | user_marker        | A         |        3348 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_has_video_idx          |            1 | has_video          | A         |           1 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_has_audio_idx          |            1 | has_audio          | A         |           2 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_has_link_idx           |            1 | has_link           | A         |           1 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_has_code_idx           |            1 | has_code           | A         |           1 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_is_comment_idx         |            1 | is_comment         | A         |           1 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_is_adult_idx           |            1 | is_adult           | A         |           1 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_has_picture_idx        |            1 | has_picture        | A         |           1 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_ref_idx                |            1 | ref                | A         |           1 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| v1_post |          1 | v1_post_ftx                    |            1 | searchable_content | NULL      |       49578 |     NULL |   NULL | YES  | FULLTEXT   |         |               | YES     | NULL       |
+---------+------------+--------------------------------+--------------+--------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
21 rows in set (0.00 sec)

mysql> show indexes from v1_attachment;
+---------------+------------+-----------------------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table         | Non_unique | Key_name                    | Seq_in_index | Column_name  | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+---------------+------------+-----------------------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| v1_attachment |          0 | PRIMARY                     |            1 | id           | A         |        5520 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_attachment |          0 | v1_attachment_unq           |            1 | post_id      | A         |        4972 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_attachment |          0 | v1_attachment_unq           |            2 | nr           | A         |        5514 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_attachment |          1 | v1_attachment_name_idx      |            1 | name         | A         |        5410 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| v1_attachment |          1 | v1_attachment_type_idx      |            1 | type         | A         |          22 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| v1_attachment |          1 | v1_attachment_user_idx      |            1 | user_id      | A         |          83 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| v1_attachment |          1 | v1_attachment_favourite_idx |            1 | favourite    | A         |           1 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_attachment |          1 | v1_attachment_last_post_idx |            1 | last_post_id | A         |        4949 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
+---------------+------------+-----------------------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
8 rows in set (0.00 sec)

mysql> show indexes from v1_topic;
+----------+------------+----------------------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table    | Non_unique | Key_name                   | Seq_in_index | Column_name   | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+----------+------------+----------------------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| v1_topic |          0 | PRIMARY                    |            1 | id            | A         |        2133 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_name_idx          |            1 | name          | A         |        2133 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_user_id_idx       |            1 | user_id       | A         |         115 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_forum_id_idx      |            1 | forum_id      | A         |          14 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_is_deleted_idx    |            1 | deleted       | A         |           2 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_rm_idx            |            1 | read_marker   | A         |         115 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_is_pinned_idx     |            1 | pinned        | A         |           2 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_is_private_idx    |            1 | is_private    | A         |           3 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_publish_delay_idx |            1 | publish_delay | A         |           1 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_author_idx        |            1 | author        | A         |         115 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_creation_date_idx |            1 | creation_date | A         |        2139 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_ref_idx           |            1 | ref           | A         |           1 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| v1_topic |          1 | v1_topic_ftx               |            1 | name          | NULL      |        2139 |     NULL |   NULL |      | FULLTEXT   |         |               | YES     | NULL       |
+----------+------------+----------------------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
13 rows in set (0.00 sec)

mysql>
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60874
Лё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  10.06.2022, 08:34
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 21:54
[игнорируется]
Одного достаточно, нет? :)
Этот я знаю.
А хочется расширять горизонты своих знаний, может пригодиться же.
Есть ещё какие-то варианты?
например когда значения в справочнике всего два и распределены они в дочерней примерно поровну - чтение такого индекса будет дольше чем скан всей таблицы
...
Рейтинг: 1 / 0
Нравится: Горбатый ёж
Господа базоёбы, скок сюды
    #60946
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лё  10.06.2022, 15:27
[игнорируется]
например когда значения в справочнике всего два и распределены они в дочерней примерно поровну
Избавиться от null в дочери и сделать bitmap, если мы про oracle.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #60954
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
basename [игнорируется] 
Пойдет.
Ну вот. Теперь все ясно. Зря я на Tammy Jo Saint Cloud наезжал..

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

Закон Паркинсона работает всегда.
"Если что-то можно сделать неправильно, то всегда найдется ... который так и сделает
...
Рейтинг: 1 / 0
Нравится: Гарыныч
Господа базоёбы, скок сюды
    #61386
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема была перенесена из форума 'Просто Трёп'.
...
basename:
Тема была перенесена из форума 'Просто Трёп'.
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #61757
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Tammy Jo Saint Cloud  09.06.2022, 20:38
[игнорируется]
Горбатый ёж  09.06.2022, 16:45
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 16:43
[игнорируется]
В некоторых случаях нормальный человек НИКОГДА не будет делать индекс на ФК
Случаи в студию.
к примеру, у нас есть таблица неких фактов/журнал/леджер, который содержит поле... ну, например - "аналитика", которое, разумеется, ссылается на справочник "аналитика". Если ссылается - значит нужен ФК.
Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации
Следовательно, это поле индексировать не нужно
Таким образом на большой таблице мы экономим один большой ненужный индекс
И если полей типа "аналитика" несколько - то таким образом мы эконономим несколько раз
А отдельной таблицей религия не позволяет сделать?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #61772
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще такой сайт это скорее отчётная система, тут база денормализованная должна быть.
Данные редко добавляются , о запросы всегда.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #63540
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
eNose  12.06.2022, 13:48
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 20:38
[игнорируется]
Горбатый ёж  09.06.2022, 16:45
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 16:43
[игнорируется]
В некоторых случаях нормальный человек НИКОГДА не будет делать индекс на ФК
Случаи в студию.
к примеру, у нас есть таблица неких фактов/журнал/леджер, который содержит поле... ну, например - "аналитика", которое, разумеется, ссылается на справочник "аналитика". Если ссылается - значит нужен ФК.
Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации
Следовательно, это поле индексировать не нужно
Таким образом на большой таблице мы экономим один большой ненужный индекс
И если полей типа "аналитика" несколько - то таким образом мы эконономим несколько раз
А отдельной таблицей религия не позволяет сделать?
что сделать "отдельной таблицей"?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #63541
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
Sparrow  12.06.2022, 14:32
[игнорируется]
Вообще такой сайт это скорее отчётная система, тут база денормализованная должна быть.
Данные редко добавляются , о запросы всегда.
зависит от.
в некоторый случаях денормализация может приводить к значительному возрастанию обьема денормализованных данных, и весь выигрыш, который мы получаем за счет элиминации джойнов и благодаря наличию правильных удобных индексов - мы будем терять на задержках операций ввода-вывода из-за возросшего обхъема данных
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #63552
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Tammy Jo Saint Cloud  14.06.2022, 22:03
[игнорируется]
eNose  12.06.2022, 13:48
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 20:38
[игнорируется]
Горбатый ёж  09.06.2022, 16:45
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 16:43
[игнорируется]
...
Случаи в студию.
к примеру, у нас есть таблица неких фактов/журнал/леджер, который содержит поле... ну, например - "аналитика", которое, разумеется, ссылается на справочник "аналитика". Если ссылается - значит нужен ФК.
Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации
Следовательно, это поле индексировать не нужно
Таким образом на большой таблице мы экономим один большой ненужный индекс
И если полей типа "аналитика" несколько - то таким образом мы эконономим несколько раз
А отдельной таблицей религия не позволяет сделать?
что сделать "отдельной таблицей"?
который содержит поле... ну, например - "аналитика", которое, разумеется, ссылается на справочник "аналитика"

Вот эту твою фантазию можно сделать отдельной таблицей.
Избавишься разом от фк.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #63557
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Tammy Jo Saint Cloud  14.06.2022, 22:05
[игнорируется]
Sparrow  12.06.2022, 14:32
[игнорируется]
Вообще такой сайт это скорее отчётная система, тут база денормализованная должна быть.
Данные редко добавляются , о запросы всегда.
зависит от.
в некоторый случаях денормализация может приводить к значительному возрастанию обьема денормализованных данных, и весь выигрыш, который мы получаем за счет элиминации джойнов и благодаря наличию правильных удобных индексов - мы будем терять на задержках операций ввода-вывода из-за возросшего обхъема данных
Тут скорее финансовый вопрос.
Больше данных - дороже.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #63608
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Tammy Jo Saint Cloud  14.06.2022, 22:05
[игнорируется]
Sparrow  12.06.2022, 14:32
[игнорируется]
Вообще такой сайт это скорее отчётная система, тут база денормализованная должна быть.
Данные редко добавляются , о запросы всегда.
зависит от.
в некоторый случаях денормализация может приводить к значительному возрастанию обьема денормализованных данных, и весь выигрыш, который мы получаем за счет элиминации джойнов и благодаря наличию правильных удобных индексов - мы будем терять на задержках операций ввода-вывода из-за возросшего обхъема данных
Речь шла о конкретно ЭТОМ сайте.
По этому, прежде чем нести внеочередной бред, посмотри на пропускную способность арендованных сетевых интерфейсов и смд дисков. И сравни их.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #63623
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
eNose  15.06.2022, 07:21
[игнорируется]
смд
ссд
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #63624
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
вообще прикольно конечно

тебе говорят про этот сайт, а ты начинаешь нести абстрактный бред

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

Я имел ввиду в erwin , или еще в чем нибудь описание базы есть?
Или все на коленке сделано?
...
Изменено: 15.06.2022, 21:22 - Sparrow
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #64283
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sparrow  15.06.2022, 19:20
[игнорируется]
Есть в какой нибудь внятной нотации описание структуры базы данных этого сайта?
Есть проект БД в power designer. Там нужно софт скачать, я не видел что там. Других описаний нет.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #64296
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  15.06.2022, 21:23
[игнорируется]
Sparrow  15.06.2022, 19:20
[игнорируется]
Есть в какой нибудь внятной нотации описание структуры базы данных этого сайта?
Есть проект БД в power designer. Там нужно софт скачать, я не видел что там. Других описаний нет.
Хороший инструмент. Если мне доверяешь дай файлы.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #64303
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sparrow  15.06.2022, 21:34
[игнорируется]
basename  15.06.2022, 21:23
[игнорируется]
Sparrow  15.06.2022, 19:20
[игнорируется]
Есть в какой нибудь внятной нотации описание структуры базы данных этого сайта?
Есть проект БД в power designer. Там нужно софт скачать, я не видел что там. Других описаний нет.
Хороший инструмент. Если мне доверяешь дай файлы.
Они раньше в паблике были, так что думаю, ничего страшного, если тебе их дам. Но как у компа буду.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #64308
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  15.06.2022, 21:41
[игнорируется]
Sparrow  15.06.2022, 21:34
[игнорируется]
basename  15.06.2022, 21:23
[игнорируется]
Sparrow  15.06.2022, 19:20
[игнорируется]
Есть в какой нибудь внятной нотации описание структуры базы данных этого сайта?
Есть проект БД в power designer. Там нужно софт скачать, я не видел что там. Других описаний нет.
Хороший инструмент. Если мне доверяешь дай файлы.
Они раньше в паблике были, так что думаю, ничего страшного, если тебе их дам. Но как у компа буду.
Спасибо.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #65184
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
eNose  14.06.2022, 22:24
[игнорируется]
Tammy Jo Saint Cloud  14.06.2022, 22:03
[игнорируется]
eNose  12.06.2022, 13:48
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 20:38
[игнорируется]
Горбатый ёж  09.06.2022, 16:45
[игнорируется]
...
к примеру, у нас есть таблица неких фактов/журнал/леджер, который содержит поле... ну, например - "аналитика", которое, разумеется, ссылается на справочник "аналитика". Если ссылается - значит нужен ФК.
Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации
Следовательно, это поле индексировать не нужно
Таким образом на большой таблице мы экономим один большой ненужный индекс
И если полей типа "аналитика" несколько - то таким образом мы эконономим несколько раз
А отдельной таблицей религия не позволяет сделать?
что сделать "отдельной таблицей"?
который содержит поле... ну, например - "аналитика", которое, разумеется, ссылается на справочник "аналитика"

Вот эту твою фантазию можно сделать отдельной таблицей.
Избавишься разом от фк.
щито, прости, блять? :)

у меня написано "поле, ссылающееся на справочник (отдельную таблиц)"
и ты предлаганшь отдельную таблицу сделать отдельной таблицей?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #65185
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
eNose  15.06.2022, 07:52
[игнорируется]
вообще прикольно конечно

тебе говорят про этот сайт, а ты начинаешь нести абстрактный бред

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

Дальше пошли уже общие размышления и ответы на задаваемые вопросы

ps это ж приличный форум, сорри
...
Изменено: 16.06.2022, 22:47 - Tammy Jo Saint Cloud
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #65189
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
Sparrow  15.06.2022, 21:34
[игнорируется]
basename  15.06.2022, 21:23
[игнорируется]
Sparrow  15.06.2022, 19:20
[игнорируется]
Есть в какой нибудь внятной нотации описание структуры базы данных этого сайта?
Есть проект БД в power designer. Там нужно софт скачать, я не видел что там. Других описаний нет.
Хороший инструмент. Если мне доверяешь дай файлы.
можно взять сорцы, накатаить на, скажем, скуль - и тупо ссмсом посмотреть
корявенько, но для одного раза сойдеть
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #65288
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Tammy Jo Saint Cloud  16.06.2022, 22:43
[игнорируется]
eNose  14.06.2022, 22:24
[игнорируется]
Tammy Jo Saint Cloud  14.06.2022, 22:03
[игнорируется]
eNose  12.06.2022, 13:48
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 20:38
[игнорируется]
...
А отдельной таблицей религия не позволяет сделать?
что сделать "отдельной таблицей"?
который содержит поле... ну, например - "аналитика", которое, разумеется, ссылается на справочник "аналитика"

Вот эту твою фантазию можно сделать отдельной таблицей.
Избавишься разом от фк.
щито, прости, блять? :)

у меня написано "поле, ссылающееся на справочник (отдельную таблиц)"
и ты предлаганшь отдельную таблицу сделать отдельной таблицей?
Поле сделать отдельной таблицей
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66084
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
eNose  17.06.2022, 05:54
[игнорируется]
Tammy Jo Saint Cloud  16.06.2022, 22:43
[игнорируется]
eNose  14.06.2022, 22:24
[игнорируется]
Tammy Jo Saint Cloud  14.06.2022, 22:03
[игнорируется]
eNose  12.06.2022, 13:48
[игнорируется]
...
что сделать "отдельной таблицей"?
который содержит поле... ну, например - "аналитика", которое, разумеется, ссылается на справочник "аналитика"

Вот эту твою фантазию можно сделать отдельной таблицей.
Избавишься разом от фк.
щито, прости, блять? :)

у меня написано "поле, ссылающееся на справочник (отдельную таблиц)"
и ты предлаганшь отдельную таблицу сделать отдельной таблицей?
Поле сделать отдельной таблицей
прости, это как?

есть таблица типа, ну не знаю

create table AnalyticCode(
id int not null primary key
,Code nvarchar(128)
)

create table SomeBigFuckingDataTab
(
Date datetime,
SomeDimension int,
SomeMeasure int,
AnalyticCodeId int not null references AnalyticCode(Id)
)
ФК позволяет нам сохранять целочную ссылочность, а индекс там в хрен не упал, т.к. по коду аналитики мы максимум фильтруем/группируем, но никогда не ищем
что тут куда выносить то?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66130
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Tammy Jo Saint Cloud  17.06.2022, 22:48
[игнорируется]
eNose  17.06.2022, 05:54
[игнорируется]
Tammy Jo Saint Cloud  16.06.2022, 22:43
[игнорируется]
eNose  14.06.2022, 22:24
[игнорируется]
Tammy Jo Saint Cloud  14.06.2022, 22:03
[игнорируется]
...
который содержит поле... ну, например - "аналитика", которое, разумеется, ссылается на справочник "аналитика"

Вот эту твою фантазию можно сделать отдельной таблицей.
Избавишься разом от фк.
щито, прости, блять? :)

у меня написано "поле, ссылающееся на справочник (отдельную таблиц)"
и ты предлаганшь отдельную таблицу сделать отдельной таблицей?
Поле сделать отдельной таблицей
прости, это как?

есть таблица типа, ну не знаю

create table AnalyticCode(
id int not null primary key
,Code nvarchar(128)
)

create table SomeBigFuckingDataTab
(
Date datetime,
SomeDimension int,
SomeMeasure int,
AnalyticCodeId int not null references AnalyticCode(Id)
)
ФК позволяет нам сохранять целочную ссылочность, а индекс там в хрен не упал, т.к. по коду аналитики мы максимум фильтруем/группируем, но никогда не ищем
что тут куда выносить то?
А, вон ты про что.
Да, ты прав.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66131
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Но конкретно в твоем примере проще аналитику засунуть в SomeBigFuckingDataTab :)
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66138
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNose  18.06.2022, 06:20
[игнорируется]
Но конкретно в твоем примере проще аналитику засунуть в SomeBigFuckingDataTab :)
Не факт.
В клиенте мы может должны видеть список значений для группировки, не таскать же нго из таблицы с данными, да и на клиенте хранить так себе идея.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66144
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Горбатый ёж  18.06.2022, 06:42
[игнорируется]
eNose  18.06.2022, 06:20
[игнорируется]
Но конкретно в твоем примере проще аналитику засунуть в SomeBigFuckingDataTab :)
Не факт.
В клиенте мы может должны видеть список значений для группировки, не таскать же нго из таблицы с данными, да и на клиенте хранить так себе идея.
create table SomeBigFuckingDataTab
(
Date datetime,
SomeDimension int,
SomeMeasure int,
AnalyticCode int,
Code nvarchar(128)
)

Не таскай

Экономить место при современной цене дисков чаще всего плохая идея
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66149
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Tammy Jo Saint Cloud  17.06.2022, 22:48
[игнорируется]
по коду аналитики мы максимум фильтруем/группируем, но никогда не ищем
А чем "фильтруем/группируем" отличается от "ищем" для сервера?
Без дополнительных ограничений получишь фуллскан.

Или ты предлагаешь тащить на клиента и там фильтровать/группировать?
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66150
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Собственно идея то понятна.
Съэкономить на индексе, но загрузить клиента.
Может упереться в сеть.
В общем зависит от множества условий, решение неуниверсальное.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66526
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
eNose  18.06.2022, 06:20
[игнорируется]
Но конкретно в твоем примере проще аналитику засунуть в SomeBigFuckingDataTab :)
А как тогда контролировать допустимые значения, при помощи чекьконстрейнтов? Для 2-5 кодов аналитики, которые не меняются, ещё можно
А если аналитика постоянно пополняется то это не выход

Опять таки все равно надо держать дескрипшены, атрибуты и прочее - выходит стандартная справочная таблица
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66531
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
eNose  18.06.2022, 07:03
[игнорируется]
Tammy Jo Saint Cloud  17.06.2022, 22:48
[игнорируется]
по коду аналитики мы максимум фильтруем/группируем, но никогда не ищем
А чем "фильтруем/группируем" отличается от "ищем" для сервера?
Без дополнительных ограничений получишь фуллскан.

Или ты предлагаешь тащить на клиента и там фильтровать/группировать?
Поиск по индексу

select SomeDimension,sum(SomeMeasure)
from DataTable
where AnalyticCodeId = 16
group by SomeDimension

фильтрация/группировка
select SomeDimension,sum(case AnalyticCodeId when 16 then SomeMeasure end) as c1,sum(SomeMeasure) as c2
from DataTable
group by SomeDimension

в первом случая индекс нужен, во втором - не нужен,
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66532
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
eNose  18.06.2022, 06:54
[игнорируется]
Горбатый ёж  18.06.2022, 06:42
[игнорируется]
eNose  18.06.2022, 06:20
[игнорируется]
Но конкретно в твоем примере проще аналитику засунуть в SomeBigFuckingDataTab :)
Не факт.
В клиенте мы может должны видеть список значений для группировки, не таскать же нго из таблицы с данными, да и на клиенте хранить так себе идея.
create table SomeBigFuckingDataTab
(
Date datetime,
SomeDimension int,
SomeMeasure int,
AnalyticCode int,
Code nvarchar(128)
)

Не таскай

Экономить место при современной цене дисков чаще всего плохая идея
Денормализация не всегда подходит даже в одноязычном приложении
У меня поддерживаемых языков десятка полтора. Такое в эту структуру не засунешь
я уж не говоряю о том, что как правило справочные таблицы содержать охулиард всяких дополнительный аттрибутов, которые описывают ту или иную аналитику.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66682
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Tammy Jo Saint Cloud  18.06.2022, 18:45
[игнорируется]
eNose  18.06.2022, 07:03
[игнорируется]
Tammy Jo Saint Cloud  17.06.2022, 22:48
[игнорируется]
по коду аналитики мы максимум фильтруем/группируем, но никогда не ищем
А чем "фильтруем/группируем" отличается от "ищем" для сервера?
Без дополнительных ограничений получишь фуллскан.

Или ты предлагаешь тащить на клиента и там фильтровать/группировать?
Поиск по индексу

select SomeDimension,sum(SomeMeasure)
from DataTable
where AnalyticCodeId = 16
group by SomeDimension

фильтрация/группировка
select SomeDimension,sum(case AnalyticCodeId when 16 then SomeMeasure end) as c1,sum(SomeMeasure) as c2
from DataTable
group by SomeDimension

в первом случая индекс нужен, во втором - не нужен,
Тут надо смотреть планы выполнения.
У оптимизатора может быть другое мнение.
Там же селективность рулит, он может подумать нелогично.
Тесты нужны.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66716
Tammy Jo Saint Cloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
eNose  18.06.2022, 22:51
[игнорируется]
Tammy Jo Saint Cloud  18.06.2022, 18:45
[игнорируется]
eNose  18.06.2022, 07:03
[игнорируется]
Tammy Jo Saint Cloud  17.06.2022, 22:48
[игнорируется]
по коду аналитики мы максимум фильтруем/группируем, но никогда не ищем
А чем "фильтруем/группируем" отличается от "ищем" для сервера?
Без дополнительных ограничений получишь фуллскан.

Или ты предлагаешь тащить на клиента и там фильтровать/группировать?
Поиск по индексу

select SomeDimension,sum(SomeMeasure)
from DataTable
where AnalyticCodeId = 16
group by SomeDimension

фильтрация/группировка
select SomeDimension,sum(case AnalyticCodeId when 16 then SomeMeasure end) as c1,sum(SomeMeasure) as c2
from DataTable
group by SomeDimension

в первом случая индекс нужен, во втором - не нужен,
Тут надо смотреть планы выполнения.
У оптимизатора может быть другое мнение.
Там же селективность рулит, он может подумать нелогично.
Тесты нужны.
во втором случае НЕТ поиска по аналитике, и индекс там до одного места дверца
в первом случае - индекс может нужен, может нет, там и правда индекс может помочь, а может быть тоже - до одного места дверца
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #66864
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Tammy Jo Saint Cloud  18.06.2022, 23:20
[игнорируется]
eNose  18.06.2022, 22:51
[игнорируется]
Tammy Jo Saint Cloud  18.06.2022, 18:45
[игнорируется]
eNose  18.06.2022, 07:03
[игнорируется]
Tammy Jo Saint Cloud  17.06.2022, 22:48
[игнорируется]
...
А чем "фильтруем/группируем" отличается от "ищем" для сервера?
Без дополнительных ограничений получишь фуллскан.

Или ты предлагаешь тащить на клиента и там фильтровать/группировать?
Поиск по индексу

select SomeDimension,sum(SomeMeasure)
from DataTable
where AnalyticCodeId = 16
group by SomeDimension

фильтрация/группировка
select SomeDimension,sum(case AnalyticCodeId when 16 then SomeMeasure end) as c1,sum(SomeMeasure) as c2
from DataTable
group by SomeDimension

в первом случая индекс нужен, во втором - не нужен,
Тут надо смотреть планы выполнения.
У оптимизатора может быть другое мнение.
Там же селективность рулит, он может подумать нелогично.
Тесты нужны.
во втором случае НЕТ поиска по аналитике, и индекс там до одного места дверца
в первом случае - индекс может нужен, может нет, там и правда индекс может помочь, а может быть тоже - до одного места дверца
Ты говорил о БОЛЬШОЙ таблице.
Второй запрос крайне хреновый для большой таблицы.
Место экономишь, а нервы пользователя нет.
...
Рейтинг: 0 / 0
Господа базоёбы, скок сюды
    #127318
Администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Администратор
Тема была перенесена из форума 'Вопросы по IT'.
...
Администратор:
Тема была перенесена из форума 'Вопросы по IT'.
Рейтинг: 0 / 0
242 сообщений из 242, показаны все 10 страниц
Форумы / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (2): Анонимы (1), Barkrowler
Игнорируют тему (1): erbol 
Читали форум (2): Анонимы (1), Barkrowler
Пользователи онлайн (64): Анонимы (51), Barkrowler, Biene Maja, Yandex Bot, zzdima, Vaska Balboa 1 мин., IT-Клоп 2 мин., Гарыныч 3 мин., Bing Bot 4 мин., Брюквенные годы 6 мин., Просто Трёп 7 мин., Antonariy 8 мин., паразит 8 мин., erbol 9 мин.
x
x
Закрыть


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