0

次のクエリを使用して、1つのテーブルから1日あたりのユニークビジター数を検索しています。しかし、これはパフォーマンスに影響を与えています。誰かがこれのためのより良い解決策を提案できますか?私の現在のクエリは:

SELECT t.date,COUNT(DISTINCT t.uID) as unique_clicks FROM table_name t
WHERE
    NOT EXISTS(
        SELECT 1
        FROM table_name t2
        WHERE
            t2.uID = t.uID
            AND t2.date < (t.date)
    )
GROUP BY t.date
4

1 に答える 1

0

あなたはこれを試すことができます:

SELECT
  t.date, COUNT(DISTINCT t.uID) as unique_clicks
FROM
  table_name t LEFT JOIN table_name t1
  ON t.uID=t2.uID AND t2.date < t.date
WHERE
  t2.uID is NULL
GROUP BY t.date

この特定の状況では、結合はEXISTS句よりも高速である必要があると思います。または、ロジックを正しく理解している場合は、これも次のようになります。

SELECT min_date, COUNT(*) as unique_clicks
FROM (
  SELECT
    t.uID, min(t.date) min_date
  FROM
    table_name t
  GROUP BY
    t.uID
  ) s
GROUP BY min_date

こちらのフィドルをご覧ください。

于 2013-03-18T06:53:17.427 に答える