事实SQLAlchemy之后创建索引

时间:2014-08-18 21:14:31

标签: python sql indexing sqlalchemy webmin

我有一个SQL数据库,我正在使用SQLAlchemy进行查询。当我按数字列过滤查询时,它会很快返回结果。例如:

result = session.query(MyObject).filter(MyObject.myinteger == 1).all()

请注意,这不是该类的主要ID,而只是一个很多的变量。但是,当我尝试按包含10个字符的字符串的列过滤查询时,返回查询所需的时间至少要长一个数量级。例如,查询看起来像这样:

result = session.query(MyObject).filter(MyObject.mystring == 'Q1213W3239').all()

可以加快进程的一个选项是索引mystring列。但是,我不确定它是如何与SQLAlchemy交互的。我相信如果我在数据库中创建mystring的索引,比如使用webmin(这是我用来管理数据库的那个),那么数据库将自动使用索引来过滤变量的查询。这是正确的还是我必须以某种方式让SQLAlchemy了解索引或通过SQLAlchemy告诉数据库使用该索引?

1 个答案:

答案 0 :(得分:0)

如果使用Webmin或其他工具在数据库中创建索引,SQLAlchemy将自动找到它。

它可能不会自动使用它,也不会使用索引,它可能不会更快。这取决于几个因素。

另请参阅:http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/