Спасибо за материал
Интересно читать было. Битрикс – та ещё поделка, а кривость кусофта поражает
Точный рецепт сочинить сложно, не зная полной картины. Прикинуть можно. Для исправления ситуации я бы вычленил типы данных и выделил бы их в отдельные таблицы с правильными типами полей. Так эффективнее. В каждой таблице сделал бы композитный уникальный ключ по версии + номеру записи (не тоже самое, что autoincrement field). Поверх этого написал бы общий API, который может обращаться к данным и выдавать их с использованием магических методов. Для особых случаев сделал бы подклассы для объектов данных... Как–то так на первый взгляд. Было бы намного проще и быстрее, чем гигантские джоины делать.