테이블에서 레코드 수를 검색하는 MySQL 명령은 무엇입니까?
답변
답변
아무도 언급하지 않았기 때문에 :
show table status;
각 테이블의 예상 행을 포함하여 추가 정보와 함께 모든 테이블을 나열합니다. 이것이 phpMyAdmin이 데이터베이스 페이지에 사용하는 것입니다.
이 정보는 MySQL 4에서 사용할 수 있으며 아마도 MySQL 3.23에서도 오래 전 정보 스키마 데이터베이스 일 것입니다.
최신 정보:
다운 투표가 있었으므로 표시된 숫자가 InnoDB 및 TokuDB에 대해 추정되며 MyISAM 및 Aria (Maria) 스토리지 엔진에 절대적으로 정확 하다는 것을 분명히하고 싶습니다 .
당 문서 :
행 수 MyISAM과 같은 일부 스토리지 엔진은 정확한 수를 저장합니다. InnoDB와 같은 다른 스토리지 엔진의 경우이 값은 근사치이며 실제 값과 40 %에서 50 %까지 다를 수 있습니다. 이 경우 SELECT COUNT (*)를 사용하여 정확한 수를 얻으십시오.
다음과 같은 쿼리 때문에 MySQL에서 행 수를 보는 가장 빠른 방법이기도합니다.
select count(*) from table;
전체 테이블 스캔을 수행하면 대용량로드 서버에서 몇 시간이 걸릴 수있는 매우 비싼 작업이 될 수있는 작업을 검색 할 수 있습니다. 또한 디스크 I / O가 증가합니다.
동일한 작업으로 인해 삽입 및 업데이트 테이블이 차단 될 수 있습니다. 이는 이국적인 스토리지 엔진에서만 발생합니다.
InnoDB와 TokuDB는 테이블 잠금으로 정상이지만 전체 테이블 스캔이 필요합니다.
답변
select
해당 테이블 에서 쿼리를 실행하지 않고 테이블의 행 수를 찾는 다른 방법이 있습니다.
모든 MySQL 인스턴스에는 information_schema 데이터베이스가 있습니다. 다음 쿼리를 실행하면 해당 테이블의 대략적인 행 수를 포함하여 테이블에 대한 자세한 정보가 제공됩니다 .
select * from information_schema.TABLES where table_name = 'table_name'\G
답변
간단히:
SELECT COUNT(*) FROM `tablename`
답변
select count(*) from YourTable
답변
그냥
SELECT COUNT(*) FROM table;
그 후 Where로 조건을 지정할 수 있습니다
SELECT COUNT(*) FROM table WHERE eye_color='brown';
답변
테이블에 여러 필드가 있고 테이블이 큰 경우 모든 필드를 메모리에로드하고 다음을 사용하면 성능이 향상되므로 사용하지 않는 *
것이 좋습니다
SELECT COUNT(1) FROM fooTable;
