답변:
COUNT(1)
, 이것은 가장 빠른 방법입니다.
아무도 언급하지 않았기 때문에 :
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 YourTable
테이블에 여러 필드가 있고 테이블이 큰 경우 모든 필드를 메모리에로드하고 다음을 사용하면 성능이 향상되므로 사용하지 않는 *
것이 좋습니다
SELECT COUNT(1) FROM fooTable;
Santosh 에서 언급 했듯이이 쿼리는 모든 테이블을 쿼리하지는 않지만 적절하게 빠릅니다.
특정 데이터베이스 의 특정 테이블 이름 에 대해 데이터 레코드 수의 정수 결과를 리턴하려면 다음을 수행하십시오.
select TABLE_ROWS from information_schema.TABLES where TABLE_SCHEMA = 'database'
AND table_name='tablename';
count(*)
성능에 대한 인식과를
$sql="SELECT count(*) as toplam FROM wp_postmeta WHERE meta_key='ICERIK' AND post_id=".$id;
$total = 0;
$sqls = mysql_query($sql,$conn);
if ( $sqls ) {
$total = mysql_result($sqls, 0);
};
echo "Total:".$total;`
tablename