CREATE MATERIALIZED VIEW user_view REFRESH COMPLETE ON DEMAND START WITH now() NEXT now() + INTERVAL 10 second AS SELECT u.username, COUNT(o.order_id) AS total_orders, SUM(p.price * o.quantity) AS total_spent FROM users u LEFT JOIN orders o ON u.user_id = o.user_id LEFT JOIN products p ON o.product_id = p.product_id GROUP BY u.user_id ORDER BY total_spent DESC LIMIT 10;
语句建立的方式如上,创建一个物化视图,且是异步刷新,刷新的频率是10秒刷新一次。
创建的物化视图可以查询吗,当然可以查询......
查询物化视图的结果
通过MySQL的view_materialized_info 视图就可以查询到
创建物化视图通过语句查看定时进行刷新的mysql view8.018
写到这里有人会问,到底这是哪个MySQL版本是什么,上图显示 8.018的MySQL就有这个功能。
懵了吧,咣咣的!!!
实际上这个并不是我们开源的MySQL,而是我们使用的PolarDB for MySQL,在这个版本中已经提供了MySQL的物化视图功能,通过物化视图功能,可以直接在“mysql”上完成这个功能。
这是PolarDB FOR MYSQL在提供了IMCI功能后,他们又做出的一个新功能,MySQL物化视图。