使用group by子句进行MYSQL性能调优

时间:2013-03-28 07:55:40

标签: mysql sql mysql-workbench

我有这样的查询。

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

2 个答案:

答案 0 :(得分:2)

改变(...)改为使用连接。像

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

答案 1 :(得分:0)

也许:

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);