Здравствуйте.
Используем дополнительное поле "Номер группы" (в профиле пользователей)
В "Работа со списком пользователей" при попытке отфильтровать пользователей по конкретной группе запрос выполняется ООООчень медленно и при 5000 слушателях вообще оканчивается ошибкой. Выяснили, что дело в SQL - конструкции типа where..... IN (select.....). Т.е. для фильтрации используется подзапрос. Если в запросе использовать JOIN для соединения таблиц user и user_info_data запрос выполняется почти мгновенно. Очень не хочется переписывать код, т.к. в данном случае простой допиской не обойтись. ЧТо это? Особенность MySql или изначальный косяк в коде? И что делать?
Moodle 1.9, MySql
99% sql кода в moodle написано таким образом, чтобы работать без изменения на 4-х поддерживаемых базах данных, а не на одной конкретной, поэтому многие sql вещи там делаются весьма не эффективно в угоду универсальности.
Если вы знаете, как переписать данный запрос так, чтобы он работал лучше и поддерживал все 4 вида баз данных, то не ленитесь - сделайте и опубликуйте.
Заодно скачайте версию 2.0 moodle и посмотрите, не изменился ли этот фрагмент - там очень много делается в плане улучшения производительности.
Если вы знаете, как переписать данный запрос так, чтобы он работал лучше и поддерживал все 4 вида баз данных, то не ленитесь - сделайте и опубликуйте.
Заодно скачайте версию 2.0 moodle и посмотрите, не изменился ли этот фрагмент - там очень много делается в плане улучшения производительности.
IMHO это проблемы mysql ( это же grep на стеройдах )
Версия mysql какая ?
PS На postgresql все быстро. У нас в списке 14000 юзеров и фильтрация по под. полю моментальная.
PPS погуглите "mysql subquery performance"
Версия mysql какая ?
PS На postgresql все быстро. У нас в списке 14000 юзеров и фильтрация по под. полю моментальная.
PPS погуглите "mysql subquery performance"