【发布时间】:2012-11-20 13:13:30
【问题描述】:
我在 MySQL 中发现了一些奇怪的(对我而言)行为。我有一个简单的查询:
SELECT CONVERT( `text`.`old_text`
USING utf8 ) AS stext
FROM `text`
WHERE `text`.`old_id` IN
(
SELECT `revision`.`rev_text_id`
FROM `revision`
WHERE `revision`.`rev_id`
IN
(
SELECT `page_latest`
FROM `page`
WHERE `page_id` = 108
)
)
当我运行它时,phpmyadmin 显示执行时间为 77.0446 秒。
但后来我替换了
WHERE `text`.`old_id` IN
通过
WHERE `text`.`old_id` =
它的执行时间下降到大约 0.001 秒。本次查询结果
SELECT `revision`.`rev_text_id`
FROM `revision`
WHERE `revision`.`rev_id`
IN
(
SELECT `page_latest`
FROM `page`
WHERE `page_id` = 108
)
是
+------------+
|rev_text_id |
+------------+
|6506 |
+------------+
有人可以解释一下这种行为吗?
【问题讨论】:
-
不,但我确定EXPLAIN 可以。
-
@Quadrat137 - 出于好奇,您的最后执行时间是多少?在 77 秒内节省了多少?
-
是的,你的查询是 0.001,和 Kuya John 的一样,非常感谢你们俩
标签: mysql sql phpmyadmin