我想知道如何加速我的网络应用程序。我有一张表有150万条记录。该表中大约10列仅由大约600,000个对象使用。所以我认为用这10列创建一个新表并包含第一个表和新表之间的关系是个好主意。为了解释一些特殊情况,我建立了多对多的关系。我使用sqlalchemy和postgres数据库,我基本上遵循文档
http://docs.sqlalchemy.org/en/latest/orm/basic_relationships.html#many-to-many
一切正常,但从新表中获取对象的速度非常慢。我想知道为什么?应该有一种方法可以非常快速地索引这种关系并访问相关对象吗?
我的设置如下。只要有纸质对象,我就用
访问相关的doi记录paper.doi_records
对纸张表中列的访问大约需要10 ^ -5秒,而对新表中doi_record的访问大约需要10 ^ -2秒......
这是我的设置
class Paper(db.Model):
id = db.Column(db.String(1000), primary_key=True, index=True)
doi = db.Column(db.String(1000))
...
def __repr__(self):
return '<Paper %r>' % (self.id)
class DOI_record(db.Model):
__tablename__ = 'doi_record'
doi = db.Column(db.String(1000), primary_key=True, index=True)
...
papers = db.relationship('Paper', secondary=related_dois, backref=db.backref('doi_records'))
def __repr__(self):
return '<DOI_record %r>' % (self.doi)
related_dois = db.Table('related_dois',
db.Column('paper_id', db.String(1000), db.ForeignKey('paper.id')),
db.Column('doi', db.String(1000), db.ForeignKey('doi_record.doi'))
)