我有一个相当大的 SQL 查询(连接 3 个巨大的表)并且运行速度太慢。我正在尝试对其进行优化并进行奇怪的观察:
SELECT board FROM ((foo JOIN bar ON id_bar=bar.id) JOIN baz ON id_baz=baz.id) ORDER BY foo.id DESC LIMIT 1;
+-------+
| board |
+-------+
| 3 |
+-------+
1 row in set (3,99 sec)
board
是一个int字段,上面有一个索引。好的。但是,现在,如果我选择一个索引varchar(6)
字段,我得到的结果很慢:
SELECT type FROM ((foo JOIN bar ON id_bar=bar.id) JOIN baz ON id_baz=baz.id) ORDER BY foo.id DESC LIMIT 1;
+--------+
| type |
+--------+
| normal |
+--------+
1 row in set (17,76 sec)
这怎么可能?我认为查询中的慢部分在JOIN
// ORDER
/部分中GROUP
,WHERE
而不是在结果的实际显示中。如何增强该查询?