2012-10-19 5 views
1

DB에 테이블이 있고 공간이 약 90GB입니다. 나는 테이블 select count(idNewsNotification) from notification의 행 더를 계산 해본 그것은 테이블 상태가 테이블의 정확한 행을 표시합니까?

4982397

1 row in set (59 min 48.35 sec)

을 초래하지만 show table status like <table_name>를 사용하여 조회 할 때 완벽한 무엇

Engine: InnoDB 
Version: 10 
Row_format: Compact 
Rows: 8631267 
Avg_row_length: 11237 
Data_length: 96996425728 
Max_data_length: 0 
Index_length: 175374336 
Data_free: 0 
Auto_increment: NULL 
..... 

있음을 보여주고있다 테이블의 레코드 수를 아는 절차?

+0

[mysql 4.0에서 innodb 테이블의 행 개수를 얻는 가장 빠른 방법은 무엇입니까?] (http://stackoverflow.com/questions/1191414/whats-the-quickest-way-to-get -row-count-of-innodb-tables-in-mysql-4-0) – Barmar

답변

1

귀하의 계산에 1 시간이 걸렸다는 사실은 당신이 InnoDB (이 데이터를 캐시하지 않음)를 실행하고 있음을 의미합니다.

이와 같이 테이블 상태는 다른 요인에 기초한 근사치이며 신뢰할 수 없습니다.

카운트 (*)는 정확하지만 기다릴 고통이 있습니다. the doc에서

: 등의 MyISAM 같은

일부 스토리지 엔진은 정확한 수를 저장합니다. InnoDB와 같은 다른 스토리지 엔진의 경우이 값은 근사치이며 은 실제 값과 40-50 % 정도 다를 수 있습니다. 이 경우 정확한 숫자를 얻으려면 SELECT COUNT (*)를 사용하십시오.

관련 문제