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 に答える