我有一个烧瓶应用程序:
db = SQLAlchemy(app)
@app.route('/')
def home():
query = "SELECT door_id FROM table WHERE id = 2422628557;"
result = db.session.execute(query)
return json.dumps([dict(r) for r in result])
执行时:curl http://127.0.0.1:5000/
我很快就得到了结果[{"door_id": 2063805}]
但是当我反向查询时:query = "SELECT id FROM table WHERE door_id = 2063805;"
一切都很慢。你知道吗
可能我在id属性上有索引,而在door\u id上没有这样的索引。 如何提高绩效?如何在门牌号上添加索引?你知道吗
看看你的问题的解释计划。你知道吗
你很可能看到这样的情况:
Seq扫描检查这个表中的每一行,然后根据您限制的id进行过滤。你知道吗
在这种情况下,您应该向ID列添加索引。 计划将改为:
优化程序将使用索引来减少查询的行查找。你知道吗
这将加快您的查询速度。你知道吗
如果要在该列上建立索引,只需创建它:
然后根据您的设置,您可能需要对其进行分析,以便将其介绍给query planner,例如:
请记住—所有索引都需要额外的IO来处理数据
相关问题 更多 >
编程相关推荐