Size: a a a

2020 July 09

AB

Andrey Bogdanov in MySQL
если and то будет неверно, как раз-таки)
источник

AB

Andrey Bogdanov in MySQL
но дело не в этом... почему медленно все-же работает?
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
Добрый день, подскажите как можно ускорить запрос.
У меня запрос просто вешает базу, ничего такого, два джоина и условие where/or, но записей в обоих таблицах очень много

Выбрать все ивенты для определенных игроков, где игроки поучаствовал как в тренировках, так и в матчах

SELECT
 event.id,
 msi.player_id,
 COUNT(event.id) AS event_counter
FROM
 event
 LEFT JOIN match_sheet_item AS msi
   ON msi.event_id = event.id
 LEFT JOIN training_sheet_item AS tsi
   ON tsi.event_id = event.id
WHERE tsi.`player_id`IN (46)
 OR msi.`id`IN (46)

Попробовал добавить два индекса
 ALTER TABLE match_sheet_item ADD INDEX(event_id);
 ALTER TABLE training_sheet_item ADD INDEX(event_id);


но ничего не дало
Тут также НЕТ ВООБЩЕ GROUP BY.

Нет, паренЬ, запрос неверный просто от слова "совсем".
источник

AB

Andrey Bogdanov in MySQL
я его не включал пока что, знаю что он нужен, но причем тут запрос верный или нет? я думаю по бизнес-логике все же мне понятнее, почему медленно работает два джоина + or?
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
Добрый день, подскажите как можно ускорить запрос.
У меня запрос просто вешает базу, ничего такого, два джоина и условие where/or, но записей в обоих таблицах очень много

Выбрать все ивенты для определенных игроков, где игроки поучаствовал как в тренировках, так и в матчах

SELECT
 event.id,
 msi.player_id,
 COUNT(event.id) AS event_counter
FROM
 event
 LEFT JOIN match_sheet_item AS msi
   ON msi.event_id = event.id
 LEFT JOIN training_sheet_item AS tsi
   ON tsi.event_id = event.id
WHERE tsi.`player_id`IN (46)
 OR msi.`id`IN (46)

Попробовал добавить два индекса
 ALTER TABLE match_sheet_item ADD INDEX(event_id);
 ALTER TABLE training_sheet_item ADD INDEX(event_id);


но ничего не дало
А скорость -- у запроса нет ни одного SARG в WHERE -- он просто не может не обработать все записи, так что он вообще никогда не будет быстро работать
источник

AB

Andrey Bogdanov in MySQL
что значит sarg?
источник

AB

Andrey Bogdanov in MySQL
в explain же показывает всего 213к записей
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
я его не включал пока что, знаю что он нужен, но причем тут запрос верный или нет? я думаю по бизнес-логике все же мне понятнее, почему медленно работает два джоина + or?
как бы запрос либо верный , либо нет. Если ты его поменял --- это другой запрос. И надо отдельно рассматривать уже новый запрос.
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
что значит sarg?
Search ARGument
источник

AB

Andrey Bogdanov in MySQL
можешь пример привести? запрос такой, какой я скинул, вот с ним и хотелось бы выяснить вопрос перфоманса
источник

AB

Andrey Bogdanov in MySQL
в where in стоит
WHERE tsi.`player_id`IN (46)   OR msi.`id`IN (46)
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
Добрый день, подскажите как можно ускорить запрос.
У меня запрос просто вешает базу, ничего такого, два джоина и условие where/or, но записей в обоих таблицах очень много

Выбрать все ивенты для определенных игроков, где игроки поучаствовал как в тренировках, так и в матчах

SELECT
 event.id,
 msi.player_id,
 COUNT(event.id) AS event_counter
FROM
 event
 LEFT JOIN match_sheet_item AS msi
   ON msi.event_id = event.id
 LEFT JOIN training_sheet_item AS tsi
   ON tsi.event_id = event.id
WHERE tsi.`player_id`IN (46)
 OR msi.`id`IN (46)

Попробовал добавить два индекса
 ALTER TABLE match_sheet_item ADD INDEX(event_id);
 ALTER TABLE training_sheet_item ADD INDEX(event_id);


но ничего не дало
В общем, итог: запрос неверный, переписывай.
ПОСЛЕ ты сможешь подумать о том , как быстро он будет работать.
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
можешь пример привести? запрос такой, какой я скинул, вот с ним и хотелось бы выяснить вопрос перфоманса
Бессмысленно
источник

AB

Andrey Bogdanov in MySQL
знаешь какой итог? ты не шаришь нихера за sql и пытаешься влезать
источник

ВТ

Виктор Ткаченко... in MySQL
Andrey Bogdanov
в where in стоит
WHERE tsi.`player_id`IN (46)   OR msi.`id`IN (46)
Эти условия в данном случае как постусловия срабатывают
источник

ls

løst søul in MySQL
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
знаешь какой итог? ты не шаришь нихера за sql и пытаешься влезать
Я НЕ ШАРЮ?
источник

ls

løst søul in MySQL
несите корвалол
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
знаешь какой итог? ты не шаришь нихера за sql и пытаешься влезать
Вот сейчас обидно было...
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
знаешь какой итог? ты не шаришь нихера за sql и пытаешься влезать
Я конечно не забаню тебя, а то подумают, что я превышаю допустимую власть... и всё такое...
источник