首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Alchemy性能

SQL Alchemy性能
EN

Stack Overflow用户
提问于 2011-05-12 19:49:51
回答 2查看 1K关注 0票数 2

我正在做一个需要一个巨大数据库的项目。目前我们正在使用SQLAlchemy,但我有点担心性能问题。我的问题是,如果有这样的查询:

代码语言:javascript
运行
复制
session.query(DataStorage).filter(DataStorage.storage_path.startswith(path)).all()

SQLAlchemy是如何进行实际的翻译和过滤的?它是否使用SELECT子句从DataStorage获取所有条目,然后检查所有条目?或者它知道如何将"filter(DataStorage.storage_path.startswith(path))“转换成SQL?使用原生SQL查询在性能方面损失了多少?

向您致敬,博格丹

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-12 20:55:23

SqlAlchemy使用您的代码生成SQL语句。在你的例子中,你得到了类似这样的东西:

代码语言:javascript
运行
复制
SELECT * FROM DataStorage WHERE DataStorage.storage_path LIKE 'path%';

一旦使用.all(),就会针对数据库运行查询。因此,在本例中,它将获取结果集迭代器中的所有行,并将它们返回给您。

票数 2
EN

Stack Overflow用户

发布于 2011-05-12 20:08:30

我不熟悉您正在使用的特定SQLAlchemy构造,但了解它的最好方法是尝试一下。在MySQL中打开查询日志记录,然后查看SQLAlchemy正在生成的查询。您可以尝试手动编写查询,并比较两者的性能。(为此,您需要在数据库中存储大量测试数据。)

通常,or在简单的SELECT、WHERE子句、ORDER BY等方面做得很好。当您开始对数据进行许多连接或大量处理时,构造的查询往往不是最优的。这是特定于您的应用程序的。我通常采用的方法是使用ORM编写代码,并在必要时优化并替换为SQL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5977501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档