【发布时间】:2011-02-09 01:17:57
【问题描述】:
我有一个 sql 语句,我将在其中加入大约 4 个表,每个表有 200K 行。查询运行,但一直冻结。当我对 3 个表进行连接时,它会返回行(大约需要 10 秒)。任何建议为什么?加快速度的建议?
谢谢!
代码
SELECT *
FROM equipment, tiremap, workreference, tirework
WHERE equipment.tiremap = tiremap.`TireID` AND
tiremap.`WorkMap` = workreference.`aMap` AND
workreference.`bMap` = tirework.workmap
LIMIT 5
附言
如果有帮助的话,我正在使用 sql alchemy 生成此代码,用于此的 sqlalchemy 代码是
query = session.query(equipment, tiremap, workreference, tirework)
query = query.filter(equipment.c.tiremap == tiremap.c.TireID)
query = query.filter(tiremap.c.WorkMap==workreference.c.aMap)
query = query.filter(workreference.c.bMap == tirework.c.workmap)
query = query.limit(5)
query.all()
【问题讨论】:
-
为了让它工作而排除的表是否总是同一个表?换句话说,你能让它与 4 个可能的表中的任何 3 个一起工作吗?还是总是有问题的 1 个特定表?
-
您是否通过 EXPLAIN 运行它以查看它在做什么?这应该是你的第一步。
-
@MusiGenesis ,我能够以不错的速度运行前 3 个表的 sql,但是一旦我开始加入疲劳工作,它似乎就冻结了,没有响应,你认为是什么问题?
标签: sql mysql postgresql sqlalchemy