1

我有一个这样的查询。

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

4

2 回答 2

2

更改 (. . .) 改为使用 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
于 2013-03-28T08:00:58.223 回答
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);
于 2013-03-28T08:02:23.747 回答