TLDR :如何针对空关系字段加快查询速度?
更新:这是SQLAlchemy使用的SQL。有谁知道为什么LIMIT ? OFFSET ?
存在?
SELECT addresses.id, addresses.street, addresses.city, addresses.state, addresses.zipcode, addresses.parcel
FROM addresses
WHERE NOT (EXISTS (SELECT 1
FROM results
WHERE addresses.id = results.address_id))
LIMIT ? OFFSET ?
我在SQLite3数据库上执行的一些查询非常缓慢。我很惊讶,因为我只有大约90,000个结果实例。这里有一些对象信息:
class Address(Base): # There are 1.45M addresses
...
results = relationship("Result", back_populates="address")
class Result(Base): # There are 90k results
...
address_id = Column(Integer, ForeignKey('addresses.id'))
address = relationship("Address", back_populates="results")
此查询需要25分钟!!
q = session.query(Address)
addresses = [
[row.street, row.zipcode, row.id] for row in
q.filter(Address.results == None).limit(350).all()
]
这是索引问题吗?即使没有索引,我觉得limit
子句应该比事情更快。