수백만 행이있는 테이블의 행 수를 계산하는 빠른 방법을 원합니다. 스택 오버플로에서 " MySQL : 행 수를 계산하는 가장 빠른 방법 "이라는 게시물을 찾았습니다 .이 문제가 해결되는 것처럼 보였습니다. Bayuah 가이 답변을 제공했습니다.
SELECT
table_rows "Rows Count"
FROM
information_schema.tables
WHERE
table_name="Table_Name"
AND
table_schema="Database_Name";
스캔 대신 조회처럼 보이기 때문에 마음에 들었으므로 빠르지 만 테스트를하기로 결정했습니다.
SELECT COUNT(*) FROM table
성능 차이가 얼마나되는지 확인하십시오.
불행히도 아래와 같이 다른 답변 이 나타납니다.
질문
답이 약 2 백만 행씩 다른 이유는 무엇입니까? 전체 테이블 스캔을 수행하는 쿼리가 더 정확한 숫자라고 생각하지만이 느린 쿼리를 실행하지 않고도 올바른 숫자를 얻을 수있는 방법이 있습니까?
나는 ANALYZE TABLE data_302
0.05 초 안에 완료했다. 쿼리를 다시 실행하면 이제 34384599 행의 결과가 훨씬 가까워 지지만 34906061 행과 같은 숫자는 select count(*)
아닙니다. 분석 테이블이 즉시 반환되고 백그라운드에서 처리됩니까? 나는 이것이 테스트 데이터베이스라고 언급 할 가치가 있다고 생각하며 현재 작성되지 않았습니다.
누군가에게 테이블의 크기를 알려주는 경우에 대해서는 아무도 신경 쓰지 않을 것입니다.하지만 행 수를 그 숫자를 사용하여 데이터베이스에 쿼리하는 "동일한 크기의"동기 쿼리를 만드는 코드에 비트 코드를 전달하고 싶었습니다. Alexander Rubin 의 병렬 쿼리 실행 으로 느린 쿼리 성능 향상에 나와있는 방법과 유사 하게 병렬로 수행 됩니다. 그대로, 나는 단지 가장 높은 id를 SELECT id from table_name order by id DESC limit 1
얻고 테이블이 너무 조각화되지 않기를 바랍니다.
NUM_ROWS
콜 럼