sqlalchemy中的过滤条件性能

时间:2016-12-25 19:22:28

标签: python postgresql sqlalchemy flask-sqlalchemy

我正在使用带有sqlalchemy的postgres数据库,我有以下命令,它从表中选择一组随机的X行。

random_set_of_Xrows = models.Table.query.filter(or_(*filters)).order_by(models.Table.random_value).limit(len(X)).all()

过滤器看起来像

[models.Table.primary_category_id == 1, models.Table.primary_category_id == 2]

和random_value是一个索引列,表中有一个随机数。 我发现如果我不包含filter语句,这个查询大约需要0.02秒,但是使用filter语句需要大约1秒。我有点惊讶这个过滤器语句太慢了,因为它只是一个整数比较。有没有办法优化这个?

表结构如下所示

class Table(db.Model):
    id = db.Column(db.Integer, primary_key=True, index=True)
    random_value = db.Column(db.Integer, index=True) 
    primary_category_id = db.Column(db.Integer, db.ForeignKey('category.category_id'))

class Query_Category(db.Model):
    category_id = db.Column(db.Integer, primary_key=True)

0 个答案:

没有答案