2013-07-04 5 views
0

일부 검색을 해봤지만 명확한 대답과 내 질문에 대한 설명을 찾지 못했습니다.하나의 쿼리에서 여러 테이블 개수

나는 table1, table2, table3, table4 및 table5라고하는 5 개의 테이블을 가지고 있으며 각 테이블에 행의 수를 얻기 위해 COUNT(*)을 수행하려고합니다.

하나의 검색어로 조합하거나 5 가지 별도의 검색어를 사용해야합니까? 나는 항상 쿼리의 수가 적어 질수록 그 쿼리를 하나의 쿼리로 결합해야한다고 추측하고 있습니다.

한 가지 방법은 UNION을 사용하는 것입니다.하지만이 작업을 수행하는 가장 효율적인 방법이 무엇인지, 그리고 그 이유는 누구입니까?

도움 주셔서 감사합니다.

+0

이 읽기 ​​: HTTP : // 유래 .com/questions/5089427/sql-server-multiple-queries-or-union –

답변

2

하나의 행으로 당신에게 그 수를 줄 것이다 다음

SELECT 
    (SELECT count(*) from table1) AS table1, 
    (SELECT count(*) from table2) AS table2, 
    (SELECT count(*) from table3) AS table3, 
    etc... 
) 

, 당신은 단지 하나 하나에서 카운트 (*)를 원하는 가정. DB 서버는 여전히 n + 1 개의 쿼리 (n 개의 테이블, 1 개의 부모 쿼리)를 실행하여 이러한 카운트를 얻지 만, 어쨌든 UNION을 사용하는 경우 동일한 이야기가됩니다. 노동 조합은 각 행에 1 개의 값을 갖는 여러 행을 생성합니다. subselect 메소드의 복수의 값을 가지는 1 행.

0

실제 액세스 권한이없는 공유 호스팅에서는 읽기 액세스 권한이있는 경우 TABLE_ROWS 열이있는 INFORMATION_SCHEMA TABLES 테이블에서 해당 정보를 읽을 수 있습니다.

이 (. 거기 InnoDB 테이블에 대한 말씀을 알고 있어야합니다 - 당신은 당신의 MyISAM을하지 않고 정확한 계산이 필요합니다, 그래서 만약 다른 대답은 더 나은 솔루션을)

관련 문제