我有一个使用SQLAlchemy查询的SQL数据库。当我用数值列过滤查询时,它会很快返回结果。例如:
result = session.query(MyObject).filter(MyObject.myinteger == 1).all()
请注意,这不是类的主id,而是许多变量中的一个。但是,当我尝试按包含10个字符的字符串的列筛选查询时,返回查询至少要花费一个数量级的时间。例如,查询如下所示:
^{pr2}$可以加快进程的一个选项是索引mystring列。但是,我不确定这是如何与SQLAlchemy交互的。我相信,如果我在数据库中创建mystring的索引,比如使用webmin(这是我用来管理数据库的),那么数据库将自动使用该索引来查询过滤变量。这是正确的吗?还是我必须让SQLAlchemy知道索引,或者通过SQLAlchemy告诉数据库使用该索引?在
如果使用Webmin或其他工具在数据库中创建索引,SQLAlchemy将自动找到它。在
它可能不会自动使用它,如果使用索引,也可能不会更快。这取决于几个因素。在
另请参见:http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/
相关问题 更多 >
编程相关推荐