【问题标题】:MYSQL Performance Tuning with group by clause使用 group by 子句进行 MYSQL 性能调优
【发布时间】:2013-03-28 07:55:40
【问题描述】:

我有一个这样的查询。

SELECT count(*)
FROM table1 e
WHERE e.column1=1
  AND e.id IN
    (SELECT MAX(ID)
     FROM table2 A
     WHERE A.column1=1
       AND A.date=CURDATE()
     GROUP BY A.column2);

当我运行此查询时,由于我有数千条记录,因此花费了太多时间。如何调整查询以更好地执行。

提前致谢。

编辑:table2 中的 column2 是 Table1 的 id

【问题讨论】:

标签: mysql sql mysql-workbench


【解决方案1】:

更改 (. . .) 改为使用 join。喜欢

SELECT count(*) 
FROM table1 AS e
Inner join   
(
  SELECT MAX(ID) 
  FROM table2 A
  WHERE A.column1 = 1 
    AND A.date = CURDATE() 
  GROUP BY A.column2
) t2 on e.id = t2.id
WHERE e.column1 = 1

【讨论】:

    【解决方案2】:

    也许:

    SELECT count(*)
    FROM table1 e
    WHERE e.column1=1
      AND EXISTS 
        (SELECT *
         FROM table2 A
         WHERE A.column1=1
           AND A.date=CURDATE()
           AND A.ID = e.id);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      相关资源
      最近更新 更多