首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过sqlalchemy对MySql运行的查询比在DB控制台上运行的慢得多

问通过sqlalchemy对MySql运行的查询比在DB控制台上运行的慢得多
EN

Stack Overflow用户
提问于 2014-01-27 14:19:33
回答 1查看 393关注 0票数 0

我在我们的数据库上运行了大量的SQL代码。为了使其具有可读性,我将其结构化为大量临时表,每次需要运行查询时都会创建这些临时表。

当测试这些查询时,我在Sequel Pro中针对DB运行它们,虽然速度不快,但运行大约需要一分钟。

然后,我使用这些相同的查询(其中大多数只是创建临时表x (INDEX(blah)) AS (SELECT somecrazystuff);),并在python脚本中通过sqlalchemy运行它们,它们大约需要15-20分钟。

我不知道为什么会发生这种情况,但这使得使用python脚本进行测试变得很笨拙,我最终在Sequel Pro中完成了大部分开发工作,并在稍后保存它。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-01-31 10:34:31

第一个想法:把sqlalchemy去掉,试着通过mysql-python运行查询。SQLAlchemy主要用于构造SQL语句,然后通过mysql-python刷新这些语句;由于是手工构造语句,因此要避免可能的开销来源。

第二个是查看MySQL服务器正在做什么。根据它使用的引擎,您可以将所有查询转储到日志文件(请参阅http://www.howtogeek.com/howto/database/monitor-all-sql-queries-in-mysql/),或者如果您使用的是InnoDB表,则可以使用SHOW ENGINE INNODB STATUS。你想要确保当来自SQLAlchemy和Sequel Pro的查询到达服务器时,它们实际上是相同的。

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

https://stackoverflow.com/questions/21374224

复制
相关文章

相似问题

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