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

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

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

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

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

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

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

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

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

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

LEFT OUTER JOIN

или

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

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

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

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

LEFT OUTER JOIN

или

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

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
Тож так сначала подумал, что надо from v1_attachment сделать.
Но потом подумал, что на v1_post.user_id наверняка индекс есть.
Так-то лефтами можно выстраивать порядок соединения выборки, есть такой лайфхак, но нормальный оптимизатор сам должен разбираться с такими вещами если можно индекс подцепить. Сейчас 2022 на лворе
...
Рейтинг: 0 / 0
07.06.2022, 19:51
    #58507
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
паразит  07.06.2022, 19:46
[игнорируется]
Наверное оутер. Непонятно откуда у него дубли были
я вначале к табличке с вложениями пытался прикрутить.
...
Рейтинг: 0 / 0
07.06.2022, 19:53
    #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
07.06.2022, 19:55
    #58510
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  07.06.2022, 19:49
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
к таблице post, самой объёмной, присоединяю остальные.
Понятно. Фик знает как там мусикл действует, но по сути ты сначала получаешь полную выборку и в том числе с сообщениями без аттачментов, а сверху накладываешь условие нот налл. Попробуй в условии склейки таблиц добавить этот нот налл. В фб такое прокатывали. Может побыстрее ьудет
...
Рейтинг: 0 / 0
07.06.2022, 19:59
    #58511
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename, планы давай
...
Рейтинг: 0 / 0
07.06.2022, 20:05
    #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
07.06.2022, 20:14
    #58514
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
паразит  07.06.2022, 19:55
[игнорируется]
basename  07.06.2022, 19:49
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

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

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

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

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

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
А что мне в данном случае даст right?
Иннер джоин
...
Рейтинг: 0 / 0
07.06.2022, 20:25
    #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
07.06.2022, 20:26
    #58527
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  07.06.2022, 20:19
[игнорируется]
Табличка пост - самая объемная.
Не суть, если там индекс по user_id include (post_id, topic_id), то все будет быстро (примерно к ms sql server)
...
Рейтинг: 0 / 0
07.06.2022, 20:27
    #58528
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Дед на сиквел был слаб, насколько я помню
...
Рейтинг: 0 / 0
07.06.2022, 20:28
    #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
07.06.2022, 20:28
    #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
07.06.2022, 20:31
    #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
07.06.2022, 20:32
    #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
07.06.2022, 20:35
    #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
07.06.2022, 20:36
    #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
07.06.2022, 20:37
    #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
07.06.2022, 20:38
    #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
07.06.2022, 20:42
    #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
07.06.2022, 20:43
    #58566
Sparrow
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
07.06.2022, 20:46
    #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
07.06.2022, 20:47
    #58573
Sparrow
Sparrow 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Это стандарты, и му sql их чтит и поддерживает.
...
Рейтинг: 0 / 0
07.06.2022, 20:48
    #58575
Sparrow
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
07.06.2022, 20:51
    #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
07.06.2022, 20:51
    #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
07.06.2022, 20:54
    #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
07.06.2022, 21:09
    #58605
Sparrow
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
07.06.2022, 21:11
    #58609
Sparrow
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
07.06.2022, 21:14
    #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
07.06.2022, 21:22
    #58646
Sparrow
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
07.06.2022, 21:30
    #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
07.06.2022, 21:30
    #58666
Sparrow
Sparrow 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
паразит [игнорируется] 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

это бред, сорян. По крайней мере для скуля (судя по темпдб)
Для мелких серверов с хуевым оптмизатором - может быть правдой.
...
Рейтинг: 0 / 0
07.06.2022, 22:27
    #58780
Tammy Jo Saint Cloud
Участник
[заблокирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
PaNik  07.06.2022, 22:01
[игнорируется]
З.з.ы. вышеописанное применительно к ms sql, чего там с оптимизатором mysql - я хз
ага, таки скуль
...
Рейтинг: 0 / 0
07.06.2022, 22:27
    #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
07.06.2022, 22:29
    #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
07.06.2022, 22:31
    #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
07.06.2022, 22:31
    #58786
Tammy Jo Saint Cloud
Участник
[заблокирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  07.06.2022, 19:34
[игнорируется]
вначале у меня какие-то дубли получались
какие дубли получались? когда у тебя на один пост было несколько аттачей?

так вроде и задача была " нужно выводить список вложений" - значит ты мог получить в одной теме несколько постов - если в посте было несколько аттачей
...
Рейтинг: 0 / 0
07.06.2022, 22:37
    #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
08.06.2022, 04:30
    #58893
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Народ изголодался по сиквелу, передуны старые. Задачка наипростецкая для студента первокурсника на зачёт в первом семестре.
...
Рейтинг: 0 / 0
08.06.2022, 04:42
    #58894
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Sparrow [игнорируется] 

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

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

Доброе утро. Я проснулся семь часов поспал, очень хорошо!
Привет, я тоже давно не сплю.
Начинается обычный день, все по графику.
...
Рейтинг: 0 / 0
08.06.2022, 05:35
    #58898
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Артефакт  08.06.2022, 05:32
[игнорируется]
а я не спал всю ночь
но на скуль не тянет хотя и базоеб
У тебя неправильный график. Пиво пил накануне?
...
Рейтинг: 0 / 0
08.06.2022, 06:03
    #58899
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Артефакт  08.06.2022, 05:32
[игнорируется]
а я не спал всю ночь
но на скуль не тянет хотя и базоеб
Та же фигня
...
Рейтинг: 0 / 0
08.06.2022, 06:29
    #58905
Артефакт
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
ничего не пил - проспал до 16 потом не спится
когда пью пиво сплю хорошо
сегодня схожу за пивом
но придется подождать до 11 когда наливайка откроется
...
Рейтинг: 0 / 0
08.06.2022, 08:04
    #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
08.06.2022, 08:06
    #58927
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
PaNik  07.06.2022, 22:01
[игнорируется]
У Бази в первоначальном запросе на таблицу постов накладывается ограничение по юзер_ид
А я предложил его убрать?
...
Рейтинг: 0 / 0
08.06.2022, 08:09
    #58928
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Tammy Jo Saint Cloud  07.06.2022, 22:31
[игнорируется]
значит ты мог получить в одной теме несколько постов - если в посте было несколько аттачей
Сомневаюсь, что у деды все аттачи в посте имеют одинаковые наименования.
...
Рейтинг: 0 / 0
08.06.2022, 08:14
    #58932
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  08.06.2022, 08:09
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 22:31
[игнорируется]
значит ты мог получить в одной теме несколько постов - если в посте было несколько аттачей
Сомневаюсь, что у деды все аттачи в посте имеют одинаковые наименования.
Ждите 39 минут и разберёте эту задачку
...
Рейтинг: 0 / 0
08.06.2022, 08:27
    #58938
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  08.06.2022, 08:14
[игнорируется]
Горбатый ёж  08.06.2022, 08:09
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 22:31
[игнорируется]
значит ты мог получить в одной теме несколько постов - если в посте было несколько аттачей
Сомневаюсь, что у деды все аттачи в посте имеют одинаковые наименования.
Ждите 39 минут и разберёте эту задачку
Я уже работать уйду.
...
Рейтинг: 0 / 0
08.06.2022, 10:36
    #59043
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  08.06.2022, 08:04
[игнорируется]
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
ну не такой уж хитрый, но направляет оптимизатор в нужном направлении. Я с ораклом с 10-ки не работал, сейчас его оптимизатор научился такой лайфхак разжевывать в иннер джойн?
...
Рейтинг: 0 / 0
08.06.2022, 10:48
    #59057
Артефакт
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
чтобы понять что происходит без плана не получится
...
Рейтинг: 1 / 0
Нравится: PaNik
08.06.2022, 10:50
    #59063
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
паразит  08.06.2022, 10:36
[игнорируется]
Горбатый ёж  08.06.2022, 08:04
[игнорируется]
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
ну не такой уж хитрый, но направляет оптимизатор в нужном направлении. Я с ораклом с 10-ки не работал, сейчас его оптимизатор научился такой лайфхак разжевывать в иннер джойн?
Понятия не имею, я такие запросы не пишу.
...
Рейтинг: 0 / 0
08.06.2022, 10:52
    #59066
Артефакт
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
v1_post.user_id = '173'
может быть табле скан и индекс сик
почуствуйте разницу
...
Рейтинг: 0 / 0
08.06.2022, 10:57
    #59074
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
W  08.06.2022, 10:55
[игнорируется]
паразит  07.06.2022, 19:50
[игнорируется]
Так-то лефтами можно выстраивать порядок соединения выборки
нихуя
нихуя подобного
еббадь
Он прав, можно, но не только лефтами и было это давно.
Впрочем сейчас тоже есть возможность включить сию заебатую возможность используя хинт.
ЗЫ сцуко, как же меня заебал этот хинт во всех подряд запросах, даже если там всего 2 таблицы соединяются.
...
Рейтинг: 0 / 0
08.06.2022, 11:00
    #59077
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
W  08.06.2022, 10:58
[игнорируется]
это пидорская техника
зачем быть пидором?
В моём случае это наследие от которого я избавляюсь, где встречаю.
Пока ни один ревьювер не завернул конкретно это исправление.
...
Рейтинг: 0 / 0
08.06.2022, 11:01
    #59079
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Ещё не очень понятно, зачем значение для user_id передавать в апострофах? Если это число, то и передавать его числом.
...
Рейтинг: 0 / 0
08.06.2022, 11:13
    #59108
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
W  08.06.2022, 10:55
[игнорируется]
паразит  07.06.2022, 19:50
[игнорируется]
Так-то лефтами можно выстраивать порядок соединения выборки
нихуя
нихуя подобного
еббадь
твой опыт мал
...
Рейтинг: 0 / 0
08.06.2022, 11:15
    #59113
Tammy Jo Saint Cloud
Участник
[заблокирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
W  08.06.2022, 10:49
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 21:41
[игнорируется]
Именно для таких долбойобов я пишу статьи
иди нахуй пидор
С
На, у тебя отвалилось
...
Рейтинг: 0 / 0
08.06.2022, 11:15
    #59117
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  08.06.2022, 11:01
[игнорируется]
Ещё не очень понятно, зачем значение для user_id передавать в апострофах? Если это число, то и передавать его числом.
интересно, дед сам таблицы клепал? может там тип чар у паля заипенел
...
Рейтинг: 0 / 0
08.06.2022, 11:22
    #59131
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
паразит  08.06.2022, 11:15
[игнорируется]
может там тип чар у паля заипенел
Может и так.
Но мне кажется это базя просто перестраховался или пример неправильно понял.
Скорее всего для id дед использовал автоинкрементное поле, но оно вряд ли строковое.
...
Рейтинг: 0 / 0
08.06.2022, 12:30
    #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
08.06.2022, 12:30
    #59206
Tammy Jo Saint Cloud
Участник
[заблокирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
это поше или очередное его подрожалово?
...
Рейтинг: 0 / 0
08.06.2022, 12:36
    #59213
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Tammy Jo Saint Cloud  08.06.2022, 12:30
[игнорируется]
это поше или очередное его подрожалово?
Пашка не такой борзый
...
Рейтинг: 0 / 0
08.06.2022, 13:23
    #59257
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  08.06.2022, 08:04
[игнорируется]
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
Чего???
Почему не работает???
...
Рейтинг: 0 / 0
08.06.2022, 13:28
    #59261
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  08.06.2022, 10:57
[игнорируется]
включить сию заебатую возможность используя хинт.
Ога, блеать, навтыкают хинтов, потом таблица разрастается и наступает пиздец
...
Рейтинг: 0 / 0
08.06.2022, 13:57
    #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
08.06.2022, 14:12
    #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
08.06.2022, 14:24
    #59335
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
PaNik  08.06.2022, 13:23
[игнорируется]
Горбатый ёж  08.06.2022, 08:04
[игнорируется]
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
Чего???
Почему не работает???
Потому что в общем случае поле name в таблице аттачментов может быть null и ты потеряешь аттачмент.
...
Рейтинг: 0 / 0
08.06.2022, 14:27
    #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
08.06.2022, 14:29
    #59344
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
PaNik  08.06.2022, 14:27
[игнорируется]
Там имя файла с аттачментом. Если там null - аттачмента нет.
Откуда ты знаешь все общие случаи?
А что делать, если аттачмент в систему приаттачивается посредством православного копипаста, который о опять таки в общем случае может не иметь никакого имени файла (в отличии от богомерзкого драгэндропа)?
...
Рейтинг: 0 / 0
08.06.2022, 14:39
    #59356
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  08.06.2022, 14:29
[игнорируется]
PaNik  08.06.2022, 14:27
[игнорируется]
Там имя файла с аттачментом. Если там null - аттачмента нет.
Откуда ты знаешь все общие случаи?
А что делать, если аттачмент в систему приаттачивается посредством православного копипаста, который о опять таки в общем случае может не иметь никакого имени файла (в отличии от богомерзкого драгэндропа)?
basename, что хранится в поле v1_attachment.name?
...
Рейтинг: 0 / 0
08.06.2022, 14:40
    #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
08.06.2022, 14:49
    #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
08.06.2022, 15:21
    #59394
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
PaNik  08.06.2022, 14:49
[игнорируется]
Вполне рабочий вариант.
Не в общем случае.
...
Рейтинг: 0 / 0
08.06.2022, 16:28
    #59420
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  08.06.2022, 15:21
[игнорируется]
PaNik  08.06.2022, 14:49
[игнорируется]
Вполне рабочий вариант.
Не в общем случае.
"Общие случаи" часто пагубно сказываться на производительности в данном конкретном случае
...
Рейтинг: 0 / 0
09.06.2022, 08:15
    #59815
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
PaNik  08.06.2022, 16:28
[игнорируется]
Горбатый ёж  08.06.2022, 15:21
[игнорируется]
PaNik  08.06.2022, 14:49
[игнорируется]
Вполне рабочий вариант.
Не в общем случае.
"Общие случаи" часто пагубно сказываться на производительности в данном конкретном случае
Интересно и как может пагубно сказаться на производительности замена left join на join?
...
Рейтинг: 0 / 0
09.06.2022, 14:28
    #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
09.06.2022, 14:36
    #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
09.06.2022, 14:40
    #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
09.06.2022, 14:41
    #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
09.06.2022, 14:41
    #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
09.06.2022, 14:46
    #60156
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Tammy Jo Saint Cloud  09.06.2022, 14:41
[игнорируется]
постгре
Эта не мелкая.
И всё равно я сомневаюсь, что замена left join на join может вызвать деградацию.
...
Рейтинг: 0 / 0
09.06.2022, 14:46
    #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
09.06.2022, 14:47
    #60158
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  09.06.2022, 14:36
[игнорируется]
Я так и не понял до сих пор чем плох конкретно мой запрос.
Тем, что ты используешь left join.
Тебе он не нужен, потому что ты ищешь вложения.
Замени left join на join и убери условие name is not null.
...
Рейтинг: 0 / 0
09.06.2022, 14:49
    #60159
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  09.06.2022, 14:47
[игнорируется]
basename  09.06.2022, 14:36
[игнорируется]
Я так и не понял до сих пор чем плох конкретно мой запрос.
Тем, что ты используешь left join.
Тебе он не нужен, потому что ты ищешь вложения.
Замени left join на join и убери условие name is not null.
ага, уже сделал. постом выше
...
Рейтинг: 0 / 0
09.06.2022, 14:52
    #60166
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename [игнорируется] 

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

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

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

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

Если я правильно понял, в сабжевом случае, согласно анализатору запроса, left join быстрее работает?
Выводи время исполнения для каждого запроса
...
Рейтинг: 0 / 0
09.06.2022, 15:40
    #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
09.06.2022, 15:43
    #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
09.06.2022, 15:44
    #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
09.06.2022, 15:45
    #60242
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  09.06.2022, 15:40
[игнорируется]
Блин, сложный ваш SQL.
Придрочиться можно.
basename  09.06.2022, 15:40
[игнорируется]
даже текущую задачу можно решить фиг знает сколькми способами.
Это норма.
...
Рейтинг: 0 / 0
09.06.2022, 15:46
    #60245
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  09.06.2022, 15:40
[игнорируется]
Блин, сложный ваш SQL.
Скажешь тоже. Конфеты "подушечки" знаешь? Вот как туда повидлу засовывают, вот вопрос!
...
Рейтинг: 0 / 0
09.06.2022, 15:47
    #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
09.06.2022, 15:51
    #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
09.06.2022, 15:52
    #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
09.06.2022, 15:52
    #60259
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
По сути Базя в 1-м посте получил готовый правильный результат, который имеем за разумное время. Запускать этот запрос с разными юзер_ид особо часто, как полагаю, не планируется.
Дальше холивар и возможные оптимизации [:smile]
...
Рейтинг: 0 / 0
09.06.2022, 15:54
    #60264
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
PaNik [игнорируется] 

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

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

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

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

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

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

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

Одинаковое для обеих запросов
Размер таблиц небольшой
Правильно ли я понимаю, грубо говоря, в случае left join ему надо просто к большому куску надо присобачить ещё кусочек, а в случае join, отсечь ненужное из двух кусков и уже их склеить? тогда вроде бы логично, что join дороже и дольше должен выполняться?
...
Рейтинг: 0 / 0
09.06.2022, 16:22
    #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
09.06.2022, 16:24
    #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
09.06.2022, 16:24
    #60308
Tammy Jo Saint Cloud
Участник
[заблокирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
cat2  09.06.2022, 16:24
[игнорируется]
Соединение будет происходить одинаково в обоих случаях, но LEFT, как правило, возвращает больше записей и поэтому выполняется медленнее
нет
...
Рейтинг: 0 / 0
09.06.2022, 16:26
    #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
09.06.2022, 16:27
    #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
09.06.2022, 16:27
    #60314
cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Господа базоёбы, скок сюды
Tammy Jo Saint Cloud  09.06.2022, 16:24
[игнорируется]
cat2  09.06.2022, 16:24
[игнорируется]
Соединение будет происходить одинаково в обоих случаях, но LEFT, как правило, возвращает больше записей и поэтому выполняется медленнее
нет
Обоснуй
...
Рейтинг: 0 / 0
09.06.2022, 16:28
    #60315
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Хуяссе планы...
...
Рейтинг: 0 / 0
09.06.2022, 16:29
    #60316
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  09.06.2022, 16:28
[игнорируется]
Хуяссе планы...
что с ними не так? )
...
Рейтинг: 0 / 0
09.06.2022, 16:29
    #60317
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  09.06.2022, 16:29
[игнорируется]
Горбатый ёж  09.06.2022, 16:28
[игнорируется]
Хуяссе планы...
что с ними не так? )
А есть текстовый вариант?
...
Рейтинг: 0 / 0
09.06.2022, 16:31
    #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
09.06.2022, 16:34
    #60320
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Tammy Jo Saint Cloud  09.06.2022, 16:31
[игнорируется]
давайте на секундочку представим, что формальная запись запроса и правда отображает тот порядок, в котором "физически" соединятся таблицы при выполнении запроса
Это что за древняя СУБД?
Или это любители хинтовать запросы?
...
Рейтинг: 0 / 0
09.06.2022, 16:34
    #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
09.06.2022, 16:35
    #60322
Tammy Jo Saint Cloud
Участник
[заблокирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  09.06.2022, 16:34
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 16:31
[игнорируется]
давайте на секундочку представим, что формальная запись запроса и правда отображает тот порядок, в котором "физически" соединятся таблицы при выполнении запроса
Это что за древняя СУБД?
Или это любители хинтовать запросы?
йобаный блядь в рот....
"ДАвайте ПРЕДСТАВИМ", для целей демонстрации
...
Рейтинг: 0 / 0
09.06.2022, 16:38
    #60323
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  09.06.2022, 16:34
[игнорируется]
В тектовом виде такое.

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

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

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

Я тоже могу придумать способ, когда никаких индексов нет и INNER с OUTER будут выполнятся за одно и тоже время.
...
Рейтинг: 0 / 0
09.06.2022, 16:50
    #60339
cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Господа базоёбы, скок сюды
Tammy Jo Saint Cloud  09.06.2022, 16:43
[игнорируется]
Горбатый ёж  09.06.2022, 16:41
[игнорируется]
Нормальный человек будет делать индекс на FK.
Очень сильно зависит от.
В некоторых случаях нормальный человек НИКОГДА не будет делать индекс на ФК
О, господи! Откуда этот придурок на нас свалился!
Дофига способов построить кривую базу, но вовсе не надо применять их всех!
...
Рейтинг: 0 / 0
09.06.2022, 16:54
    #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
09.06.2022, 17:11
    #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
09.06.2022, 17:13
    #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
09.06.2022, 17:14
    #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
09.06.2022, 17:22
    #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
09.06.2022, 17:32
    #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
09.06.2022, 17:42
    #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
09.06.2022, 17:43
    #60369
Модест
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
cat2  09.06.2022, 16:24
[игнорируется]
Соединение будет происходить одинаково в обоих случаях, но LEFT, как правило, возвращает больше записей и поэтому выполняется медленнее
Наверное не меньше.
...
Рейтинг: 0 / 0
09.06.2022, 17:48
    #60370
Sad_But_False
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
cat2  07.06.2022, 19:45
[игнорируется]
LEFT INNER JOIN
ебануцо
...
Рейтинг: 1 / 0
Нравится: PaNik
09.06.2022, 17:54
    #60375
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Мне другое интересно. У деды что, каждый пост три раза хранится? Просто, хтмл и серчабле?
...
Рейтинг: 0 / 0
09.06.2022, 17:55
    #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
09.06.2022, 17:58
    #60379
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Просто Трёп  09.06.2022, 17:54
[игнорируется]
Мне другое интересно. У деды что, каждый пост три раза хранится? Просто, хтмл и серчабле?
ну исходя из записей - да
pasted_image.png
...
Рейтинг: 0 / 0
09.06.2022, 18:01
    #60381
cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Господа базоёбы, скок сюды
Просто Трёп [игнорируется] 

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

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

Это не у Деды. Деда сам движок не писал,
а откуда движок?
Деда писал, но я не помню. А может и ошибаюсь
...
Рейтинг: 0 / 0
09.06.2022, 19:39
    #60411
Sparrow
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
09.06.2022, 19:43
    #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
09.06.2022, 19:43
    #60414
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
cat2  09.06.2022, 16:24
[игнорируется]
Соединение будет происходить одинаково в обоих случаях
На физическом уровне вообще не факт
...
Рейтинг: 0 / 0
09.06.2022, 19:44
    #60415
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  09.06.2022, 16:26
[игнорируется]
Tammy Jo Saint Cloud [игнорируется] 

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

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

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

Я пытался.
ты обоссаный пес
твои попытки не засчитаны
профессионал ты никакой
ты хороший пидор - аставаяся с нами будешь и дальше пидором
ну а чо ты хотел? в элиту таких как ты не берут
хуйца соснуть не предложишь?
...
Рейтинг: 0 / 0
09.06.2022, 21:46
    #60499
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Tammy Jo Saint Cloud  09.06.2022, 20:38
[игнорируется]
Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации
Это случай обеспечения целостности без использования поиска. Это я и так знаю.
Ещё есть примеры?
...
Рейтинг: 0 / 0
09.06.2022, 21:54
    #60505
Tammy Jo Saint Cloud
Участник
[заблокирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  09.06.2022, 21:46
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 20:38
[игнорируется]
Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации
Это случай обеспечения целостности без использования поиска. Это я и так знаю.
Ещё есть примеры?
Одного достаточно, нет? :)
...
Рейтинг: 0 / 0
10.06.2022, 08:34
    #60574
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Tammy Jo Saint Cloud  09.06.2022, 21:54
[игнорируется]
Одного достаточно, нет? :)
Этот я знаю.
А хочется расширять горизонты своих знаний, может пригодиться же.
Есть ещё какие-то варианты?
...
Рейтинг: 0 / 0
10.06.2022, 12:30
    #60778
Tammy Jo Saint Cloud
Участник
[заблокирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Горбатый ёж  10.06.2022, 08:34
[игнорируется]
Tammy Jo Saint Cloud  09.06.2022, 21:54
[игнорируется]
Одного достаточно, нет? :)
Этот я знаю.
А хочется расширять горизонты своих знаний, может пригодиться же.
Есть ещё какие-то варианты?
других особо не встречал, за исключение "отложенных индексов" - в случаях, когда потенциально индекс может пригодится, но пока не нужен - потому его или вообще не создают, либо создают задизейбленным (но это тот еще гемор)

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

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

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

Закон Паркинсона работает всегда.
"Если что-то можно сделать неправильно, то всегда найдется ... который так и сделает
...
Рейтинг: 1 / 0
Нравится: Гарыныч
11.06.2022, 15:51
    #61386
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Тема была перенесена из форума 'Просто Трёп'.
...
basename:
Тема была перенесена из форума 'Просто Трёп'.
Рейтинг: 0 / 0
12.06.2022, 13:48
    #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
12.06.2022, 14:32
    #61772
Sparrow
Sparrow 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Вообще такой сайт это скорее отчётная система, тут база денормализованная должна быть.
Данные редко добавляются , о запросы всегда.
...
Рейтинг: 0 / 0
14.06.2022, 22:03
    #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
14.06.2022, 22:05
    #63541
Tammy Jo Saint Cloud
Участник
[заблокирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Sparrow  12.06.2022, 14:32
[игнорируется]
Вообще такой сайт это скорее отчётная система, тут база денормализованная должна быть.
Данные редко добавляются , о запросы всегда.
зависит от.
в некоторый случаях денормализация может приводить к значительному возрастанию обьема денормализованных данных, и весь выигрыш, который мы получаем за счет элиминации джойнов и благодаря наличию правильных удобных индексов - мы будем терять на задержках операций ввода-вывода из-за возросшего обхъема данных
...
Рейтинг: 0 / 0
14.06.2022, 22:24
    #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
14.06.2022, 22:31
    #63557
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Tammy Jo Saint Cloud  14.06.2022, 22:05
[игнорируется]
Sparrow  12.06.2022, 14:32
[игнорируется]
Вообще такой сайт это скорее отчётная система, тут база денормализованная должна быть.
Данные редко добавляются , о запросы всегда.
зависит от.
в некоторый случаях денормализация может приводить к значительному возрастанию обьема денормализованных данных, и весь выигрыш, который мы получаем за счет элиминации джойнов и благодаря наличию правильных удобных индексов - мы будем терять на задержках операций ввода-вывода из-за возросшего обхъема данных
Тут скорее финансовый вопрос.
Больше данных - дороже.
...
Рейтинг: 0 / 0
15.06.2022, 07:21
    #63608
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Tammy Jo Saint Cloud  14.06.2022, 22:05
[игнорируется]
Sparrow  12.06.2022, 14:32
[игнорируется]
Вообще такой сайт это скорее отчётная система, тут база денормализованная должна быть.
Данные редко добавляются , о запросы всегда.
зависит от.
в некоторый случаях денормализация может приводить к значительному возрастанию обьема денормализованных данных, и весь выигрыш, который мы получаем за счет элиминации джойнов и благодаря наличию правильных удобных индексов - мы будем терять на задержках операций ввода-вывода из-за возросшего обхъема данных
Речь шла о конкретно ЭТОМ сайте.
По этому, прежде чем нести внеочередной бред, посмотри на пропускную способность арендованных сетевых интерфейсов и смд дисков. И сравни их.
...
Рейтинг: 0 / 0
15.06.2022, 07:49
    #63623
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
eNose  15.06.2022, 07:21
[игнорируется]
смд
ссд
...
Рейтинг: 0 / 0
15.06.2022, 07:52
    #63624
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
вообще прикольно конечно

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

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

Я имел ввиду в erwin , или еще в чем нибудь описание базы есть?
Или все на коленке сделано?
...
Изменено: 15.06.2022, 21:22 - Sparrow
Рейтинг: 0 / 0
15.06.2022, 21:23
    #64283
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Sparrow  15.06.2022, 19:20
[игнорируется]
Есть в какой нибудь внятной нотации описание структуры базы данных этого сайта?
Есть проект БД в power designer. Там нужно софт скачать, я не видел что там. Других описаний нет.
...
Рейтинг: 0 / 0
15.06.2022, 21:34
    #64296
Sparrow
Sparrow 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  15.06.2022, 21:23
[игнорируется]
Sparrow  15.06.2022, 19:20
[игнорируется]
Есть в какой нибудь внятной нотации описание структуры базы данных этого сайта?
Есть проект БД в power designer. Там нужно софт скачать, я не видел что там. Других описаний нет.
Хороший инструмент. Если мне доверяешь дай файлы.
...
Рейтинг: 0 / 0
15.06.2022, 21:41
    #64303
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Sparrow  15.06.2022, 21:34
[игнорируется]
basename  15.06.2022, 21:23
[игнорируется]
Sparrow  15.06.2022, 19:20
[игнорируется]
Есть в какой нибудь внятной нотации описание структуры базы данных этого сайта?
Есть проект БД в power designer. Там нужно софт скачать, я не видел что там. Других описаний нет.
Хороший инструмент. Если мне доверяешь дай файлы.
Они раньше в паблике были, так что думаю, ничего страшного, если тебе их дам. Но как у компа буду.
...
Рейтинг: 0 / 0
15.06.2022, 21:43
    #64308
Sparrow
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
16.06.2022, 22:43
    #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
16.06.2022, 22:44
    #65185
Tammy Jo Saint Cloud
Участник
[заблокирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
eNose  15.06.2022, 07:52
[игнорируется]
вообще прикольно конечно

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

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

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

ps это ж приличный форум, сорри
...
Изменено: 16.06.2022, 22:47 - Tammy Jo Saint Cloud
Рейтинг: 0 / 0
16.06.2022, 22:45
    #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
17.06.2022, 05:54
    #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
17.06.2022, 22:48
    #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
18.06.2022, 06:14
    #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
18.06.2022, 06:20
    #66131
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Но конкретно в твоем примере проще аналитику засунуть в SomeBigFuckingDataTab :)
...
Рейтинг: 0 / 0
18.06.2022, 06:42
    #66138
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
eNose  18.06.2022, 06:20
[игнорируется]
Но конкретно в твоем примере проще аналитику засунуть в SomeBigFuckingDataTab :)
Не факт.
В клиенте мы может должны видеть список значений для группировки, не таскать же нго из таблицы с данными, да и на клиенте хранить так себе идея.
...
Рейтинг: 0 / 0
18.06.2022, 06:54
    #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
18.06.2022, 07:03
    #66149
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Tammy Jo Saint Cloud  17.06.2022, 22:48
[игнорируется]
по коду аналитики мы максимум фильтруем/группируем, но никогда не ищем
А чем "фильтруем/группируем" отличается от "ищем" для сервера?
Без дополнительных ограничений получишь фуллскан.

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

Опять таки все равно надо держать дескрипшены, атрибуты и прочее - выходит стандартная справочная таблица
...
Рейтинг: 0 / 0
18.06.2022, 18:45
    #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
18.06.2022, 18:47
    #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
18.06.2022, 22:51
    #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
18.06.2022, 23:20
    #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
19.06.2022, 06:51
    #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
26.08.2022, 16:17
    #127318
Администратор
Администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Тема была перенесена из форума 'Вопросы по IT'.
...
Администратор:
Тема была перенесена из форума 'Вопросы по IT'.
Рейтинг: 0 / 0
Форумы / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды / 242 сообщений из 242, показаны все 10 страниц
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (5): Анонимы (5)
Игнорируют тему (1): erbol
Читали форум (5): Анонимы (5)
Пользователи онлайн (73): Анонимы (69), Yandex Bot, Ветер 1 мин., Sparrow 2 мин., Bing Bot 5 мин.
x
x
Закрыть


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