MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Черт. Это же MySQl Не знаю, как там LEFT JOIN по умолчанию LEFT OUTER JOIN или LEFT INNER JOIN LEFT INNER JOIN это нонсенс. Бывают Inner join Left join Right join Full join - join Inner - left outer - right outer Бязя, тебе нужно понять что такое null в колонке, тогда поймёшь Все соединение Левое соединение Правое соединение Полное соединение Получится разное количество строк с null в значениях. Но все равно в left join Right join Full join Порождают дубли , с null , просто это разные соединения таблиц , ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 21:09 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Черт. Это же MySQl Не знаю, как там LEFT JOIN по умолчанию LEFT OUTER JOIN или LEFT INNER JOIN LEFT INNER JOIN это нонсенс. Бывают Inner join Left join Right join Full join - join Inner - left outer - right outer Бязя, тебе нужно понять что такое null в колонке, тогда поймёшь Все соединение Левое соединение Правое соединение Полное соединение Получится разное количество строк с null в значениях. Но все равно в left join Right join Full join Порождают дубли , с null , просто это разные соединения таблиц , Вначале другие дубли были. Сабжевый запрос без дублей вроде работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 21:14 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Это жуть. По стандартам sql не помню каким Толи 72 Толи позже Бязя, тебе нужно понять что такое null в колонке, тогда поймёшь Все соединение Левое соединение Правое соединение Полное соединение Получится разное количество строк с null в значениях. Но все равно в left join Right join Full join Порождают дубли , с null , просто это разные соединения таблиц , Вначале другие дубли были. Сабжевый запрос без дублей вроде работает. Как сат2 советовал. Это зависит от структуры базы , и чего тебе надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 21:22 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
... - join Inner - left outer - right outer Бязя, тебе нужно понять что такое null в колонке, тогда поймёшь Все соединение Левое соединение Правое соединение Полное соединение Получится разное количество строк с null в значениях. Но все равно в left join Right join Full join Порождают дубли , с null , просто это разные соединения таблиц , Вначале другие дубли были. Сабжевый запрос без дублей вроде работает. Как сат2 советовал. Это зависит от структуры базы , и чего тебе надо. Изначально, что я хотел: - найти все вложения пользака - вывести id пользака, имя, id топика, id поста, id форума, именование вложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 21:32 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
basename [игнорируется] Чего там прикладывать? Лефт везде убери, раз тебе атачменты нужны. С лефт джойном. Ты берёшь, получаешь все посты пользователя и пришпандориваешь аттачи к тем постам, где они есть, вот тебе и дубли. Туда же ещё и темы пришпандориваешь так же. Смысла лефт джойна тем и постов нет, потому что темя с постами связаны по любому. А так как тебе надо только посты с аттачами, то и смысла лефт джойна с аттачами тоже нет. ЗЫ но я не так лефты пишу, раз он левый то присобачиваемую таблицу пишу слева от знака =. Типа эстет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 21:41 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Почему нет? Зачем тебе они, если ты аттачи ищешь? И зачем тебе показывать посты, которые не привязаны к топикам (с лефтом именно так ты и делаешь), если это как минимум странно? Как там планы в таком случае это майскуль построит ХЗ. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 21:44 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Почему нет? Зачем тебе они, если ты аттачи ищешь? И зачем тебе показывать посты, которые не привязаны к топикам (с лефтом именно так ты и делаешь), если это как минимум странно? Как там планы в таком случае это майскуль построит ХЗ. Он все присоединил вначале, потом просто отобразил, что попросили. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 21:46 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Он же все равно сканит таблицу полностью, потом селект делает. Так? По уму может выбрать посты по юзер_ид, а потом уже к ним присоединить всё остальное. В любом случае, если ты ищешь аттачи, то лефт убирай. Ну я я бы всё равно начал с аттачей,как бы привык начинать оттуда, что ищу. Что-то вроде Код: SQL 1. 2. 3. 4.
... |
|||
:
Изменено: 07.06.2022, 21:52 - Горбатый ёж
Нравится:
Не нравится:
|
|||
07.06.2022, 21:50 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
basename [игнорируется] Чего там прикладывать? Лефт везде убери, раз тебе атачменты нужны. С лефт джойном. Ты берёшь, получаешь все посты пользователя и пришпандориваешь аттачи к тем постам, где они есть, вот тебе и дубли. Туда же ещё и темы пришпандориваешь так же. Смысла лефт джойна тем и постов нет, потому что темя с постами связаны по любому. А так как тебе надо только посты с аттачами, то и смысла лефт джойна с аттачами тоже нет. ЗЫ но я не так лефты пишу, раз он левый то присобачиваемую таблицу пишу слева от знака =. Типа эстет. У Бази в первоначальном запросе на таблицу постов накладывается ограничение по юзер_ид, что в случае индекса по юзер_ид инклуде (пост_ид, топик_ид) сведётся к поиску по индексу для выделения постов автора и джоину по относительно небольшому числу постов конкретного юзера. Правда у него тогда в where мешает условие на is not null для вложения. З.ы. нет планов - нет аналитики. З.з.ы. вышеописанное применительно к ms sql, чего там с оптимизатором mysql - я хз ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:01 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Потому что лефт покажет записи из постов даже те, у которых нет аттачей. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:02 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Почему нет? Зачем тебе они, если ты аттачи ищешь? И зачем тебе показывать посты, которые не привязаны к топикам (с лефтом именно так ты и делаешь), если это как минимум странно? Как там планы в таком случае это майскуль построит ХЗ. Он все присоединил вначале, потом просто отобразил, что попросили. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:05 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Почему нет? Зачем тебе они, если ты аттачи ищешь? И зачем тебе показывать посты, которые не привязаны к топикам (с лефтом именно так ты и делаешь), если это как минимум странно? Как там планы в таком случае это майскуль построит ХЗ. Он все присоединил вначале, потом просто отобразил, что попросили. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:12 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
... Зачем тебе они, если ты аттачи ищешь? И зачем тебе показывать посты, которые не привязаны к топикам (с лефтом именно так ты и делаешь), если это как минимум странно? Как там планы в таком случае это майскуль построит ХЗ. Он все присоединил вначале, потом просто отобразил, что попросили. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:15 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
... Зачем тебе они, если ты аттачи ищешь? И зачем тебе показывать посты, которые не привязаны к топикам (с лефтом именно так ты и делаешь), если это как минимум странно? Как там планы в таком случае это майскуль построит ХЗ. Он все присоединил вначале, потом просто отобразил, что попросили. Но открывает простор для действий оптимизатора, может пойти по неоптимальному пути (мой длинный пост выше) и отработать заметно медленнее с привлечением заметно большего числа ресурсов. З.Ы. Нужны планы. З.З.Ы. планы имеют тенденцию становиться неактуальными с увеличением числа записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:17 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
в случае иннер джоина условия соединения равносильны условиям в предложении where и оптимизатор может снача на сотни тысяч записей в таблице постов начать джоинить другие таблицы, что может потребовать выделения значительного объема ОЗУ и сброса результата в tempdb, что не есть продуктивно. Простите, был напуган. это бред, сорян. По крайней мере для скуля (судя по темпдб) Для мелких серверов с хуевым оптмизатором - может быть правдой. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:26 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
З.з.ы. вышеописанное применительно к ms sql, чего там с оптимизатором mysql - я хз ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:27 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Йожег попутал, у тебя is not null в where, а не в on Но открывает простор для действий оптимизатора, может пойти по неоптимальному пути (мой длинный пост выше) и отработать заметно медленнее с привлечением заметно большего числа ресурсов. З.Ы. Нужны планы. З.З.Ы. планы имеют тенденцию становиться неактуальными с увеличением числа записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:27 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Йожег попутал, у тебя is not null в where, а не в on ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:29 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Завязывай спрашивать, делай что советуют ... |
|||
:
Изменено: 07.06.2022, 22:31 - PaNik
Нравится:
Не нравится:
|
|||
07.06.2022, 22:31 |
|
Start [/forum/search.php?do_search=1&replies_to=58605&author_mode=wrote_post]: |
0ms |
get settings: |
1ms |
get forum list: |
5ms |
searching: |
18ms |
get settings: |
0ms |
get forum list: |
4ms |
get found posts: |
46ms |
track hit: |
21ms |
get online users: |
68ms |
check new: |
1ms |
others: | 250ms |
total: | 414ms |
0 / 0 |