我有许多复杂的查询,其结果存储在 MySQL 视图中。问题是 MySQL 视图在性能方面受到影响。
我设置了一个 cron 作业来填充一个标准表,其中包含与视图填充相同的数据:
DROP TABLE user_reports;
CREATE TABLE user_reports
SELECT col1, col2, col3 FROM
/** COMPLEX QUERY **/
;
现在,在对 cron 填充的user_reports
表进行查询时,与等效视图相比,查询时间几乎是查询时间的十分之一。
这是一种常见的方法吗?显然,每次运行 CRON 作业时服务器都会有一些负担,这意味着数据无法实时获得。
查询时间
user_reports
= 0.002 秒
查询时间view_user_reports
= 0.018 秒
综上所述,也许一个需要 0.018 秒才能运行的查询应该从应用程序代码中运行,而不是存储在视图中?尽管我认为它的扩展性不如 cron 驱动的方法。