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

时间:2014-01-27 06:19:33

标签: python mysql sql sqlalchemy

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

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

然后我接受相同的查询(大多数只是说CREATE TEMPORARY TABLE x(INDEX(blah))AS(SELECT somecrazystuff);)并通过sqlalchemy在python脚本中运行它们,它们接近15-20分钟。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

第一个想法:将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的服务器时实际上是相同的。