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