Все гораздо проще — это элементарный недосмотр. Повторяюсь: xPDO — это не база данных и даже не тонкий клиент, это просто средство формирования запросов со своими надстройками.
Я имел ввиду не xpdo-объекты, а объекты modx. Т.е. при работе с объектами modx из составных индексов нужен только tv_cnt (tmplvarid — contentid). При выборке значений TV там сначала создаётся объект TV, затем для него отбираются значения для нужных ресурсов — здесь как раз и используется индекс tv_cnt (tmplvarid — contentid).
К слову, сборка ShopModxBox поставляется сразу с настроенными индексами ;)
В других таблицах (кроме modTemplateVarResource) тоже нужные индексы отсутствуют?
И вот этот вопрос остаётся в силе:
Вопрос такой: почему при явном указании того же самого индекса запрос работает существенно быстрее. Не чуть быстрее, а существенно быстрее. А ведь запросов при загрузке веб-страницы выполняется куча. И все они могли бы работать гораздо быстрее…