Лучший способ создать материализованное представление в MySQL
19
Я использую MySQL 5.6. Я не могу создать материализованное представление, как в Oracle. Я видел одно или два решения, как Flexview.
Кто-нибудь может сказать мне лучший способ создать материализованное представление в MySQL (автоматическое обновление как в Oracle) с минимальной сложностью?
Так как он у вас уже есть, вам может понадобиться некоторая должная осмотрительность и смазка для локтей, чтобы продолжать его использовать (если вы этого еще не сделали)
АЛЬТЕРНАТИВА № 1
Возможно, вы захотите настроить сводные таблицы. Вам нужно будет проиндексировать ваши базовые таблицы, чтобы поддерживать агрегирование, прежде чем создавать сводные таблицы.
АЛЬТЕРНАТИВА № 2
Вот старый пост от http://www.materialized.info/, в котором есть более практичная стратегия, которая выглядит интригующей. Это предполагает использование триггеров. Похоже, это может быть весело ...
АЛЬТЕРНАТИВА № 3
Если ваши базовые таблицы не такие большие, и вы можете выполнять запросы к целым таблицам один раз в неделю, попробуйте User Commentsраздел « Документация MySQL» по CREATE VIEW . Ищите слово materializedна этой странице.
Если ваши базовые данные в основном стабильны или вы можете допустить разницу между представлением и данными, подумайте о том, чтобы использовать простые инструменты rolap , которые я написал для решения этого варианта использования. Это позволяет вам записывать в отдельные файлы сложные запросы SQL, которые генерируют таблицы. Отношения между запросами создаются автоматически, и запросы выполняются в соответствующем порядке с помощью инструмента make Unix . Чтобы обновить сгенерированные таблицы, вам нужно запустить make clean all. Этот инструмент в основном полезен для постепенного создания сложных запросов, которые эффективно выполняются на основе предварительно рассчитанных результатов их входных данных.
Я нашел 2 возможных решения для материализованных представлений в MySQL:
Создайте таблицу агрегации со всеми необходимыми данными, а затем создайте триггеры в таблицах, откуда поступают данные.
Создайте планировщик, который периодически собирает данные в таблицу
Подробнее о том, как реализовать 2 варианта, можно узнать из моего блога здесь: материализованное представление MySQL
источник
Если ваши базовые данные в основном стабильны или вы можете допустить разницу между представлением и данными, подумайте о том, чтобы использовать простые инструменты rolap , которые я написал для решения этого варианта использования. Это позволяет вам записывать в отдельные файлы сложные запросы SQL, которые генерируют таблицы. Отношения между запросами создаются автоматически, и запросы выполняются в соответствующем порядке с помощью инструмента make Unix . Чтобы обновить сгенерированные таблицы, вам нужно запустить
make clean all
. Этот инструмент в основном полезен для постепенного создания сложных запросов, которые эффективно выполняются на основе предварительно рассчитанных результатов их входных данных.источник