очевидно, перенести сам контент в отдельную таблицу?
вообще, решение для больших объемов данных (в зависимости от того, насколько "больших") – шардинг или распределенные kv-стораджи. в зависимости от того, сколько запросов в секунду хотите обрабатывать. для действительно масштабных случаев это обычно делается так: полные объекты статьи хранятся в некоем готовом к масштабированию сторадже (это может быть любой k-v или шардированные mysql), для быстрых выборок строим нужные таблички (обновляем при сохранении статьи), для "виджетов" держим кэш в redis/memcache. если хочется обойтись одной базой, и дело именно в размере таблиц, а не в правильно построенных индексах, то могут помочь materialized views. ну и еще посмотреть на ресурсы сервера, в которые упираются запросы, если диск, то можно заменить диск на побыстрее.
вообще, решение для больших объемов данных (в зависимости от того, насколько "больших") – шардинг или распределенные kv-стораджи. в зависимости от того, сколько запросов в секунду хотите обрабатывать. для действительно масштабных случаев это обычно делается так: полные объекты статьи хранятся в некоем готовом к масштабированию сторадже (это может быть любой k-v или шардированные mysql), для быстрых выборок строим нужные таблички (обновляем при сохранении статьи), для "виджетов" держим кэш в redis/memcache. если хочется обойтись одной базой, и дело именно в размере таблиц, а не в правильно построенных индексах, то могут помочь materialized views. ну и еще посмотреть на ресурсы сервера, в которые упираются запросы, если диск, то можно заменить диск на побыстрее.