Hi.

I need to know the number of rows in a table.

"select count(*) from a_table" works fine but it is slow when the table
is big.

I am trying instead "show table status like 'a_table'". The column 'Rows'
should give me the number of rows in the table 'a_table'. This works fine
for most of the tables but with one table, the value displayed is wrong.

Demonstration (the database is quiet) :

mysql> select count(*) from photo\G
*************************** 1. row ***************************
count(*): 700
1 row in set (0.00 sec) 

mysql> show table status like 'photo'\G
*************************** 1. row ***************************
           Name: photo
           Type: InnoDB
     Row_format: Dynamic
           Rows: 603   <<<<<<<<<<<<<< 700 != 603 >>>>>>>>>>>>>>
 Avg_row_length: 135
    Data_length: 81920
Max_data_length: NULL
   Index_length: 98304
      Data_free: 0
 Auto_increment: 19314
    Create_time: NULL
    Update_time: NULL
     Check_time: NULL
 Create_options:
        Comment: InnoDB free: 2940928 kB; (iddatephoto) REFER
dbcourant/datephoto(iddatephoto) ON DELETE CASCADE
1 row in set (0.01 sec)                         

How do you explain the difference between "count(*): 700" and "Rows: 603"
?

About the table photo:

mysql> show create table photo\G
*************************** 1. row ***************************
       Table: photo
Create Table: CREATE TABLE `photo` (
  `idphoto` bigint(20) NOT NULL auto_increment,
  `idpropriete` int(11) NOT NULL default '0',
  `iddatephoto` bigint(20) NOT NULL default '0',
  `valeur` double default NULL,
  `prefixe` varchar(16) default NULL,
  `min` double default NULL,
  `max` double default NULL,
  PRIMARY KEY  (`idphoto`),
  UNIQUE KEY `idpropriete` (`idpropriete`,`iddatephoto`),
  KEY `iddatephoto` (`iddatephoto`),
  FOREIGN KEY (`iddatephoto`) REFERENCES `dbcourant.datephoto`
(`iddatephoto`) ON DELETE CASCADE
) TYPE=InnoDB
1 row in set (0.01 sec) 

mysql> show create table datephoto\G
*************************** 1. row ***************************
       Table: datephoto
Create Table: CREATE TABLE `datephoto` (
  `iddatephoto` bigint(20) NOT NULL auto_increment,
  `datephoto` datetime NOT NULL default '0000-00-00 00:00:00',
  `idarchive` bigint(20) NOT NULL default '0',
  `jamaiseffacer` char(1) NOT NULL default '',
  PRIMARY KEY  (`iddatephoto`)
) TYPE=InnoDB
1 row in set (0.00 sec) 

Thanks in advance for your help.

Christophe.

***
Christophe DIARRA
Institut de Physique Nucleaire
15, Rue Georges Clemenceau
Bat 102 - S2I
91406 ORSAY Cedex
Tel: (33) 1 69 15 65 60
Fax: (33) 1 69 15 45 03
     (33) 1 69 15 64 70
E-mail: [EMAIL PROTECTED]
***



---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to