Как реализовать Осуществленное Представление с MySQL?

Как реализовать Осуществленные Представления?

В противном случае, как я могу реализовать Осуществленное Представление с MySQL?

Обновление:

Следующее работало бы? Это не происходит в транзакции, которая является проблемой?

DROP TABLE IF EXISTS `myDatabase`.`myMaterializedView`;
CREATE TABLE `myDatabase`.`myMaterializedView` SELECT * from `myDatabase`.`myRegularView`;
19
задан GregJohn 28 March 2010 в 20:50
поделиться

1 ответ

Ваш пример приближается к материализованному представлению "полного обновления". Если исходные таблицы содержат миллионы или миллиарды строк, вам может потребоваться представление «быстрого обновления», которое часто используется в настройках хранилища данных.

Вы могли бы приблизиться к быстрому обновлению, вместо этого используя вставку / обновление (upsert), присоединяясь к существующей «таблице представлений» по первичным ключам исходных представлений (при условии, что они могут быть сохранены ключом) или сохраняя date_time последнего обновления, и используя это в критериях SQL обновления, чтобы сократить время обновления.

Кроме того, рассмотрите возможность использования переименования таблиц, а не удаления / создания, чтобы новое представление можно было построить и установить на место почти без перерыва в недоступности. Сначала создайте новую таблицу mview_new, затем переименуйте mview в mview_old (или отбросьте ее) и переименуйте mview_new в mview. В приведенном выше примере ваше представление будет недоступно, пока выполняется заполнение SQL.

2
ответ дан 30 November 2019 в 03:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: