0

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

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 告诉数据库使用该索引?

4

1 回答 1

0

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

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

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

于 2014-08-18T23:08:26.467 回答