Вы можете использовать библиотеку JavaScript SheetJS . Он поддерживает экспорт в Excel 2007+ бинарный формат.
Существует несколько вещей, которые можно сделать:
Создайте свои индексы для соответствия запросам, которые Вы выполняете. Выполненный ОБЪЯСНЯЮТ для наблюдения типов запросов, которые выполняются и удостоверяются, что они все используют индекс, если это возможно.
Разделите свою таблицу. Paritioning является техникой для разделения большой таблицы в несколько меньших определенным (совокупным) ключом. MySQL поддерживает это внутренне от ver. 5.1.
При необходимости создайте сводные таблицы, которые кэшируют более дорогостоящие части Ваших запросов. Затем выполните свои запросы против сводных таблиц. Точно так же временные таблицы в оперативной памяти могут использоваться для хранения упрощенного представления таблицы как этап предварительной обработки.
3 предложения:
p.s. для меток времени, можно столкнуться с проблемами производительности - в зависимости от того, как MySQL обрабатывает ДАТУ И ВРЕМЯ и МЕТКУ ВРЕМЕНИ внутренне, может быть лучше сохранить метки времени как целые числа. (# secs с 1970 или безотносительно)
Ну, для запуска я предложил бы, чтобы Вы использовали "офлайн" обработку для создания 'графика готовые' данные (для большинства общих падежей) вместо того, чтобы пытаться запросить необработанные данные по требованию.
При использовании MySQL 5.1, можно использовать новые функции. но предупредите, что они содержат партию ошибок.
сначала необходимо использовать индексы. если это недостаточно, можно попытаться разделить таблицы при помощи разделения.
если это также работа привычки, можно также попробовать выравнивание нагрузки.