2014-03-21 2 views
2

У меня есть запрос, который очень медленный (большие числа), для его выполнения требуется 60 секунд.Возможно ли обновлять mysql только при изменении данных?

Я думал, что создание результата VIEW может решить проблему, но теперь я вижу, что представление обновляется для каждого запроса к представлению.

Дело в том, что реальные данные этого вида обновляются только один раз в месяц, поэтому его не нужно обновлять по каждому запросу.

Возможно ли это? Чтобы сделать просмотр только обновленным при изменении исходной таблицы?

ответ

1

Невозможно с представлением mysql от 5.6. Самое простое - создать таблицу отчетов, которая будет заполняться один раз в месяц вместо динамического представления. Вы можете создать событие, запускаемое по времени, чтобы запустить SQL для его заполнения: dev.mysql.com/doc/refman/5.5/en/create-event.html

+0

Да, это решение. я просто думал, что если бы представление могло просто обновляться только при изменении данных, это было бы еще проще. –

+1

Это была бы аккуратная функция, чтобы установить время жизни «refesh» в представлении ... – Ray

+0

@KristianRafteseth вот попытка, но это в основном то, что я описал: http://stackoverflow.com/questions/16687736/is- там-а-путь к кэш-а-вид-так что-запросов-против-это-это по-быстрому – Ray

-1

Возможно, вы можете попробовать написать функцию, которая содержит вставку/update/delete и обновить представление. Или вы можете использовать триггер mysql и обновлять представление, когда таблица имеет модификацию.

Смежные вопросы