도란한
212
2021-03-23 09:43:40
4
853

여러 테이블의 count 들의 합을 구하는 방법은 어떻게 해야할까요??


안녕하세요! 신입 개발자입니다.

다름이 아니라 회원 전체의 수를 한번에 출력하고 싶은데

회원 권한마다 테이블을 따로 설정해놔서 한번에 count를 못하고있습니다.

테이블 별로 count를 한 다음에 sum이나 다른 함수로 합쳐야 하는건지..

이럴 땐 보통 어떻게 쿼리를 짜야 할까요??

0
  • 답변 4

  • kiroki
    804
    2021-03-23 10:12:05
    mysql> select sum(tbl.EachTableCount)
       -> from
       -> (
       -> select count(*) as EachTableCount from userdemo
       -> UNION ALL
       -> select count(*) as EachTableCount from wheredemo
       -> )tbl;
  • 도란한
    212
    2021-03-23 10:24:13

    kiroki 

    감사합니다! 

    혹시

    select ( 
    (select count(*) from tbl1) + 
    (select count(*) from tbl2)
    )

    이런 쿼리는 답변의 쿼리보다 성능이 떨어질까요??

  • plwtcs
    890
    2021-03-23 11:16:47

    어떤 DB를 사용하시는지는 모르겠는데

    MSSQL 에서는 아래와 같이 조회 할 수 있습니다.


    SELECT 

    OBJ.NAME

    ,IDX.ROWS 

    FROM SYSINDEXES IDX

    INNER JOIN SYSOBJECTS OBJ

    ON IDX.ID = OBJ.ID

    WHERE IDX.INDID < 2 

    AND OBJ.NAME = '테이블 명'

    AND OBJ.XTYPE = 'U'

    ORDER BY IDX.ID


    이 쿼리를 이용해서 + 하시는게 아마 훨씬 빨랐던 걸로..(천만 건 기준 0초)

  • kiroki
    804
    2021-03-23 11:43:45 작성 2021-03-23 11:44:36 수정됨

    where조건과 join이 없을때

    테이블 전체수를 세는 count(*) 는 데이터를 직접불러오지 않고 row를 세기 때문에

    어느 경우에도 빠릅니다 100개 테이블을 각각

    select count(*) from tableName을 한후 더해도 속도는 느리지도 않으니 크게 신경쓰지 않으셔도 됩니다.

    제가 적은거나 위에 적으신 쿼리나 실행계획 면에서도 별차이 없으니 위에 적으신대로 쓰셔도 무방합니다

  • 로그인을 하시면 답변을 등록할 수 있습니다.