Медленынй SQL запрос.

Медленынй SQL запрос.

от Владимир Дмитриев -
Количество ответов: 2
Здравствуйте.
Используем дополнительное поле "Номер группы" (в профиле пользователей)
В "Работа со списком пользователей" при попытке отфильтровать пользователей по конкретной группе запрос выполняется ООООчень медленно и при 5000 слушателях вообще оканчивается ошибкой. Выяснили, что дело в SQL - конструкции типа where..... IN (select.....). Т.е. для фильтрации используется подзапрос. Если в запросе использовать JOIN для соединения таблиц user и user_info_data запрос выполняется почти мгновенно. Очень не хочется переписывать код, т.к. в данном случае простой допиской не обойтись. ЧТо это? Особенность MySql или изначальный косяк в коде? И что делать? улыбаюсь
Moodle 1.9, MySql
В ответ на Владимир Дмитриев

Re: Медленынй SQL запрос.

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода
99% sql кода в moodle написано таким образом, чтобы работать без изменения на 4-х поддерживаемых базах данных, а не на одной конкретной, поэтому многие sql вещи там делаются весьма не эффективно в угоду универсальности.
Если вы знаете, как переписать данный запрос так, чтобы он работал лучше и поддерживал все 4 вида баз данных, то не ленитесь - сделайте и опубликуйте.
Заодно скачайте версию 2.0 moodle и посмотрите, не изменился ли этот фрагмент - там очень много делается в плане улучшения производительности.
В ответ на Владимир Дмитриев

Re: Медленынй SQL запрос.

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
IMHO это проблемы mysql ( это же grep на стеройдах Большая усмешка )
Версия mysql какая ?

PS На postgresql все быстро. У нас в списке 14000 юзеров и фильтрация по под. полю моментальная.

PPS погуглите "mysql subquery performance"