Сегодня обнаружил следующую проблему в движке, которая проявляется только на сайтах с разными типами постов, как например в тикет системе http://litepublisher.ru/ и этой проблемы нет на обычных сайтах, как например этот http://blogolet.ru и к тому же только в бд версии (а тикет система доступна только в бд версии).

Проблема проста: сейчас список постов , например в архиве за месяц, получается одним запросом к бд, в котором запрашиваются все данные списка вместе с граничными условиями. Для обыкновенных постов все ок. Если же в списке есть обыкновенные посты и тикеты, то такое не проходит. Если запрашивать только один пост, то он всегда возвращается правильного типа - например тикет. Делать 10 выборок вместо 1 выборки крайне непроизводительно. Делать выборку только на тикетах нельзя по нескольким причинам: посты не знают и недолжны знать о существовании такой субстанции как тикеты. Задачу надо формулировать так: сделать разнородную выборку из бд. Но это сделать сложно, а где сложно, там обязательно все ломается. В простом случае, например только на тикетах делается выборка из двух таблиц (на самом деле из 3 кажется). Как оптимальный вариант - делать второй запрос (или сколько еще потребуется, а именно сколько разных типов в списке постов), после чего объединять эти данные.

То есть первым запросом получаем традиционный список постов. Вторым запросом получаем дополнительные данные для тикетов. Тогда можно будет говорить о двух запросах к бд. Запросов будет больше: еще промежуточный запрос для получения типов постов. Сейчас имена классов постов хранятся в отдельной таблице. Таблицу наверно следует упразднить, включив ее в таблицу постов, Сделать новое поле в таблице постов либо перечисляемым (что правильно), либо строкой (что не совсем правильно). Тикет система при инсталляции будет добавлять новое значение в перечисляемый тип.

Можно дальше продолжить рассуждения, но для меня они уже слишком очевидны. Придется делать рефакторинг кода, так что надежда на приостановку разработки мало. Постараюсь уложиться в короткие сроки.

И заодно можно будет включить опционально запрос к мета данным поста.