modX НЕ хранит значения множеств TV в разных полях

Почему modX не хранит значения множественных TV в отдельных строках таблицы modx_site_tmplvar_contentvalues ?

Как известно, modX хранит значения множественных TV-полей («Флажки» и «Список (множественный выбор)») в виде строк:
value1||value2||value3||…
Если требуется фильтровать ресурсы по этому TV, то в ходе выполнения запроса придётся разбирать такие строки на предмет наличия в них нужного значения. А такой разбор — это же трудоёмкая операция. К тому же в таблице modx_site_tmplvar_contentvalues нет индекса ни по полю value, ни по полям tmplvarid + value Как следствие, запросу придётся просматривать ВСЕ записи в таблице modx_site_tmplvar_contentvalues и для каждой такой записи разбирать строку-значение нашего TV-параметра. На большом числе ресурсов загрузка страниц будет тормозить.

По всем правилам проектирования БД множественные TV должны быть организованы следующим образом:
1. Каждое значение множественного TV хранится в отдельной строке таблицы modx_site_tmplvar_contentvalues
2. В таблице modx_site_tmplvar_contentvalues должен присутствовать индекс по полям «tmplvarid» + «value».

Не могу понять, каким образом разработчики modX могли допустить такое упущение?
Может, я чего-то недопонимаю? Или, может, есть какие-то принципиальные проблемы с такой реализацией?
Вроде бы, это всё элементарно просто и элементарно очевидно…
Cyrax_02
04 августа 2013, 07:19
modx.pro
3 245
0

Комментарии: 4

Василий Наумкин
04 августа 2013, 15:35
0
А то, что все значения ТВ в БД являются типом text, и там нет нормальных индексов тебя не смущает?

По моему, очевидно, что если нужна сортировка и скорость — нужно использовать свою таблицу, куда можно дублировать и ТВ и что угодно, и искать уже по ней.

Вот пример такого решения.
Cyrax_02
04 августа 2013, 18:14
0
Ясно. Думал, что это в настройках можно отрегулировать.
Только мне всё-равно не понятно, почему мультиТВ в modX реализовали так убого? Ведь уже 3-я версия на горизонте…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
4