로그인기록으로 일일방문자수 구하는 쿼리(MySQL)


유저아이디(INT) 와 로그인시간(Timestamp)을 컬럼으로 갖고, 유저가 로그인을 할 때마다 1씩 기록을 INSERT시키는 테이블이 있습니다.

이 테이블로부터 중복을 제거한 일일방문자수를 구하고 싶은데, 이상하게 쿼리가 떠오르질 않네요ㅠ

여러가지를 시도해보다가

일단은

SELECT A, COUNT(*) FROM (SELECT DATE(로그인시간) AS A, 유저아이디 FROM 로그인기록테이블 GROUP BY A, 유저아이디) AS B GROUP BY A

이런식으로 해봤는데 ROW수가 2000만개정도 되서 그런지 쿼리 수행에 15분정도 걸리는 것 같습니다.

쓸대없는 연산을 하는 것이라면 DB에 부하도 많이 줄 것 같아서, 이 테이블로부터 동일한 결과를 내는 더 빠르고 효율적인 쿼리가 없을까 궁금한데요.

이 문제에 대한 정석적인 방법이 있을까요?

  • 2016년 08월 16일에 작성됨

  • 중복을 제거한 일일방문자 => 하루에 한명이 여러번 로그인한 것을 한번으로 계산하겠다라는 의미인가요?    허대영(Daeyoung Heo)   2016.8.17 09:36     
조회수 175


2 답변


방문자 수 구하기

백엔드가 무엇인지 말씀하지 않으셔서 node.js 기준으로 참고할만한 링크를...

  • 2016년 08월 16일에 작성됨
    웹 사이트 공부 중입니다. 많은 도움 주시면 좋아요.


 SELECT DATE_FORMAT(로그인시간,'%Y-%m-%d') AS daily, 
        COUNT(DISTINCT 유저아이디) AS users
    FROM 로그인기록테이블 GROUP BY daily

이렇게 하면 되지 않을까요?

  • 2016년 08월 17일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close