我正在开发一个测验站点。我的数据库模式是这样的,当用户完成测验时,他们所有的答案都存储在称为响应的表中。我可以返回并通过数据库查询即时计算测验的分数。但是,我想知道将每个测验尝试的分数存储在新表中以更快地查找是否会更有效,因为我将不得不对响应表的查询进行一些后处理(即遍历每个测验和然后遍历每个测验中的问题以获得分数。
存储最终可以从查询中获取的数据是否是错误的做法?
这是我的架构相关部分的图片:
谢谢
Martyn
答案 0 :(得分:1)
MySQL当前支持用于这种计算的视图,但是这些视图不是“物化视图”,因此每次访问该视图时都将运行查询。虽然MySQL会进行一些内部优化,但不会缓存结果。
这是有关创建实例化视图的相关文章。
https://dba.stackexchange.com/questions/86790/best-way-to-create-a-materialized-view-in-mysql
要使用此功能,您将需要运行本机查询。其他大多数数据库类型都直接支持实例化视图,因此您只需要查看有关如何为后端数据库创建实例化视图的文档。