Respostas:
COUNT(1)
, este será o caminho mais rápido.
Porque ninguém mencionou:
show table status;
lista todas as tabelas junto com algumas informações adicionais, incluindo linhas estimadas para cada tabela. É isso que o phpMyAdmin está usando na página do banco de dados.
Esta informação está disponível no MySQL 4, provavelmente no MySQL 3.23 - banco de dados de esquemas de informações anteriores há muito tempo.
Como houve voto negativo, quero esclarecer que o número mostrado é estimado para InnoDB e TokuDB e é absolutamente correto para os mecanismos de armazenamento MyISAM e Aria (Maria).
De acordo com a documentação :
O número de linhas. Alguns mecanismos de armazenamento, como o MyISAM, armazenam a contagem exata. Para outros mecanismos de armazenamento, como o InnoDB, esse valor é uma aproximação e pode variar do valor real em até 40% a 50%. Nesses casos, use SELECT COUNT (*) para obter uma contagem precisa.
Essa também é a maneira mais rápida de ver a contagem de linhas no MySQL, porque consultas como:
select count(*) from table;
Fazendo uma varredura completa da tabela, o que poderia ser uma operação muito cara, que pode levar horas em um servidor grande de carga alta. Também aumenta a E / S do disco.
A mesma operação pode bloquear a tabela de inserções e atualizações - isso acontece apenas em mecanismos de armazenamento exóticos.
O InnoDB e o TokuDB estão bem com o bloqueio de tabela, mas precisam de uma verificação completa da tabela.
Temos outra maneira de descobrir o número de linhas em uma tabela sem executar uma select
consulta nessa tabela.
Toda instância do MySQL possui banco de dados information_schema. Se você executar a consulta a seguir, fornecerá detalhes completos sobre a tabela, incluindo o número aproximado de linhas nessa tabela.
select * from information_schema.TABLES where table_name = 'table_name'\G
Simplesmente:
SELECT COUNT(*) FROM `tablename`
select count(*) from YourTable
Se você tiver vários campos em sua tabela e sua tabela for enorme, é melhor NÃO UTILIZAR, *
pois carrega todos os campos na memória e, usando o seguinte, terá melhor desempenho
SELECT COUNT(1) FROM fooTable;
Como mencionado por Santosh , acho que essa consulta é adequadamente rápida, embora não esteja consultando toda a tabela.
Para retornar o resultado inteiro do número de registros de dados, para um nome de tabela específico em um banco de dados específico :
select TABLE_ROWS from information_schema.TABLES where TABLE_SCHEMA = 'database'
AND table_name='tablename';
count(*)
com a consciência desempenho
$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;`
Se você possui uma chave primária ou uma chave / índice exclusivo, o método mais rápido possível (testado com 4 milhões de tabelas de linhas)
SHOW INDEXES FROM "database.tablename" WHERE Key_Name=\"PRIMARY\"
e, em seguida, obtenha o campo de cardinalidade (é quase instantâneo)
Tempos em que 0,4s a 0,0001ms
tablename