我对此有些陌生,所以如果有人可以帮助我,那就太好了。
因此,我在SQLAlchemy中为正在开发的Flask应用程序设置了一些模型。在构建应用程序时,我在数据库(当前为SQLite)中填充了一些虚假数据,这让我感到惊讶的是,我的调用之一多么慢。
我在数据库中有一个名为Menu的表。菜单中有一个子项,节中有一个子项。像这样:
我要查询的对象是1个菜单,其中有4个部分,每个部分有10个项目。
在我的Flask路由中,我使用Menu.query.get(id)查询数据库,并使用棉花糖将其序列化为JSON。
整个过程需要花费250ms的时间才能在我的本地计算机上返回。
所以我的问题是:我在担心250毫秒方面感到愚蠢吗?缓慢的罪魁祸首是什么?-架构设计不佳?-SQLite /使用SQL Db?-还有吗?
任何帮助将不胜感激。
此外。我本来可以再深两个级别(项目具有可以选择的选项),但是大约要花整整一秒钟的时间,因此当用户请求特定项目时,我将它们移到了一个单独的端点。
考虑到所有内容都是本地的,我同意250ms过多。我希望速度变慢的原因是为了构建JSON,正在执行多个SQL查询。
SQLALCHEMY_ECHO = True
在SQLAlchemy配置上进行设置将向您显示正在生成的SQL查询,并确认这一点。
您尚未提供数据库模型,但您可能会发现您的关系正在被延迟加载,因此正在对树中的每个对象进行新的SQL查询。您可以在SQLAlchemy文档的“关系加载技术”部分中找到更多信息。
lazy='joined'
在子关系上进行设置(即,菜单->节和节->项)将导致使用JOIN而不是默认的SELECT迅速加载子关系。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句