代码之家  ›  专栏  ›  技术社区  ›  shfshfdl

Mysql两个查询都使用“Using where&Using temporary”,但速度有差异

  •  0
  • shfshfdl  · 技术社区  · 5 年前

    我有两个问题来获取以下信息。

    1. SELECT distinct(I), O from (SELECT I, O FROM HB WHERE ID > 0) as H;
      
    2. SELECT distinct(I), O FROM HB WHERE ID > 0;
      


    1. 1   PRIMARY <derived2>  ALL                 5   Using temporary
      2   DERIVED HB  range   PRIMARY PRIMARY 4       5   Using where
      
    2. 这样地:

      1   SIMPLE  HB  range   PRIMARY PRIMARY 4       5   Using where; Using temporary
      

    但是1。比2慢很多。这有什么区别?

    提前谢谢。

    1 回复  |  直到 5 年前
        1
  •  0
  •   Rick James    5 年前

    查询1具有 DISTINCT . 因此查询1较慢。

    还有一件事需要注意: Using filesort, Using temporary 通常出现在 第一 EXPLAIN ,即使它确实适用于其他行。

    有关详细信息,请参阅 解释 ,使用 EXPLAIN FORMAT=JSON SELECT ...