Size: a a a

2020 July 09

IZ

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

IZ

Ilia Zviagin in MySQL
løst søul
несите корвалол
Акромегал, может, ты ему объяснишь какими то другими словами, что он бред написал ?
источник

ls

løst søul in MySQL
да, я тот еще акромегал
источник

IZ

Ilia Zviagin in MySQL
Конечно, при желании
источник

IZ

Ilia Zviagin in MySQL
løst søul
да, я тот еще акромегал
Сорри, переврал?
источник

IZ

Ilia Zviagin in MySQL
løst søul
да, я тот еще акромегал
Не, правильно же!
источник

ls

løst søul 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);


но ничего не дало
у тебя используется COUNT без группировки по первым двум столбцам, это неправильно
так исторически сложилось, что mysql с OR не очень дружит, с большой долей вероятности это и есть причина того, что запрос кладёт базу
источник

IZ

Ilia Zviagin in MySQL
løst søul
у тебя используется COUNT без группировки по первым двум столбцам, это неправильно
так исторически сложилось, что mysql с OR не очень дружит, с большой долей вероятности это и есть причина того, что запрос кладёт базу
Спасибо
источник

AB

Andrey Bogdanov in MySQL
løst søul
у тебя используется COUNT без группировки по первым двум столбцам, это неправильно
так исторически сложилось, что mysql с OR не очень дружит, с большой долей вероятности это и есть причина того, что запрос кладёт базу
каунт можно убрать, без него быстрее не работает, естественно там нужна группировка если есть он есть, но проблема в перфомансе, когда есть 2 join + 2 условия where/or
источник

AB

Andrey Bogdanov in MySQL
да, причина, как и написал, что используется OR, вообщем идея от Виктора была здравая, что это постусловия
Я переписал так, работает вполне быстро

SELECT
event.id
FROM
 event
 LEFT JOIN match_sheet_item AS msi
   ON (msi.event_id = event.id AND msi.player_id=46)
LEFT JOIN training_sheet_item AS tsi
   ON (tsi.event_id = event.id AND tsi.player_id= 46)  
WHERE tsi.player_id`IN (46) OR msi.`player_id = 46
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
да, причина, как и написал, что используется OR, вообщем идея от Виктора была здравая, что это постусловия
Я переписал так, работает вполне быстро

SELECT
event.id
FROM
 event
 LEFT JOIN match_sheet_item AS msi
   ON (msi.event_id = event.id AND msi.player_id=46)
LEFT JOIN training_sheet_item AS tsi
   ON (tsi.event_id = event.id AND tsi.player_id= 46)  
WHERE tsi.player_id`IN (46) OR msi.`player_id = 46
Но это тоже неправильно
источник

AB

Andrey Bogdanov in MySQL
что именно?
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
что именно?
Ты же это делаешь?
Выбрать все ивенты для определенных игроков, где игроки поучаствовал как в тренировках, так и в матчах
источник

AB

Andrey Bogdanov in MySQL
да
источник

AB

Andrey Bogdanov in MySQL
а какой думаешь должен быть запрос на это?
источник

IZ

Ilia Zviagin in MySQL
Вот что выбирает твой запрос:

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

IZ

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

AB

Andrey Bogdanov in MySQL
да, ты прав, я видимо опечатался в самом начале, но нужно именно это
Выбрать все ивенты , где игрок поучаствовал в тренировке, или в матче
источник

AB

Andrey Bogdanov in MySQL
Ilia Zviagin
вообще, там два коррелированых подзапроса с EXIST должно быть
с exist будет работать быстрее?
источник

IZ

Ilia Zviagin in MySQL
Andrey Bogdanov
с exist будет работать быстрее?
Сначала напиши, потом будем обсуждать...
источник