我有200万条记录的科研出版物数据。我使用django restframework编写apis来搜索title
和abstract
中的数据。在使用12 seconds
作为db时,这会带我postgres
,但如果我使用MongoDB
作为db,它会下降到6seconds
。
但即使是6秒也会让很多用户等待我。我将title
和abstract
编入索引,但是抽象索引失败了,因为一些抽象文本太冗长了。
这是使用MongoDB(MongoEngine作为ODM)的django模型:
class Journal(Document):
title = StringField()
journal_title = StringField()
abstract = StringField()
full_text = StringField()
pub_year = IntField()
pub_date = DateTimeField()
pmid = IntField()
link = StringField()
如何提高查询性能,什么堆栈使搜索和检索更快??
答案 0 :(得分:4)
关于使用Postgres优化Django ORM的一些指示:
db_index=True
,并在条目之间有一定程度的重复,例如“title”。values()
和values_list()
仅从QuerySet中选择所需的列。contains
查询),请记住Django支持full text search directly on a Postgres database。print queryset.query
检查进入数据库的SQL查询类型以及是否可以对其进行改进。RawSQL
表达式在Django中进行的自定义SQL查询。