table_name information_schema columns mysql count information-schema

mysql - information_schema - table_name sql



El nĂºmero de filas inconsistentes de Mysql cuenta(*) frente a table.table_rows en information_schema (1)

Citando de la documentación :

Para las tablas InnoDB, el recuento de filas es solo una estimación aproximada utilizada en la optimización de SQL. (Esto también es cierto si la tabla InnoDB está particionada).

Me encontré con un fenómeno extraño, y espero que alguien me pueda explicar esto:

tengo algunas tablas "estáticas" (cambian una vez por día).

mysql> select ''appObjectGroups'' as tbl, count(*) as num from appObjectGroups union select ''appObjectDependencies'' as tbl, count(*) as num from appObjectDependencies union select ''appObjectUrls'' as tbl, count(*) as num from appObjectUrls union select ''appObjectValues'' as tbl, count(*) as num from appObjectValues union select ''appObjects;'' as tbl, count(*) as num from appObjects; +-------------------------+------+ | tbl | num | +-------------------------+------+ | appObjectGroups | 1149 | | appObjectDependencies | 6885 | | appObjectUrls | 1162 | | appObjectValues | 3795 | | appObjects; | 5409 | +-------------------------+------+ 5 rows in set (0.00 sec) mysql> select table_name as tbl, table_rows as num from information_schema.tables where table_schema=''mySchema'' and table_name like ''app%''; +-------------------------+------+ | tbl | num | +-------------------------+------+ | appObjectGroups | 1141 | | appObjectDependencies | 6153 | | appObjectUrls | 1141 | | appObjectValues | 3584 | | appObjects | 6061 | +-------------------------+------+ 5 rows in set (0.01 sec)

table_rows ¿cómo es posible que esa table_rows reporte algo diferente a la count(*) ?

y más importante para mí: ¿cuál es el correcto? :-)