Mysql 将其放在 select 中会使它变慢

Mysql Putting it inside a select will make it slower

我在使用 mysql 编写查询时遇到了问题。 所以我搜索了一下,找不到答案,所以我写了一个问题。


SELECT CAT.ID, CAT2.BIRTH, CAT.NAME
FROM CAT
INNER JOIN CAT2 ON CAT.ID = CAT2.CATID
GROUP BY CAT.ID, CAT2.BIRTH, CAT.NAME

0.032秒

SELECT * FROM (
  SELECT CAT.ID, CAT2.AGE, CAT.NAME
  FROM CAT
  INNER JOIN CAT2 ON CAT.ID = CAT2.CATID
  GROUP BY CAT.ID, CAT.Birth, CAT.NAME
) AS AA

2.16秒

刚包在select里,不知道为什么这么慢

当我检查 explain 时,索引(CAT.ID、CAT.Birth、CAT.NAME)工作正常。

在第二个查询中,MySQL会将子查询的结果放入内存。然后它必须再次查询该数据,这需要更多时间。如果您在外部查询中进行过滤,您可能会看到更大的性能差异。注意任何索引只能在子查询内部使用,不能用在外部查询上,一般都要扫描。