Если у вас кеш сбрасывается при любом обновлении таблицы — вы используете MyISAM а не InnoDB, верно?
Кеш в Мускуле работает примерно так: при получении запроса БД делает хеш этого запроса (сам запрос + данные по строках какие будут задействованы) если были изменения — если хеш совпадает — то через кеш, иначе — делать в чистую. InnoDB позволяет делать проверку на уровне строк по состоянию на начало транакции. Возможно єто поможет. Так же стоит учесть длинну кеша и накладные расходы на его поддержание.