作者TeemingVoid (TeemingVoid)
看板Database
标题Re: [SQL ] 用Navicat看资料列数,无故变动?
时间Thu Feb 9 13:52:11 2012
※ 引述《ronlee543 (..)》之铭言:
: 今天用 Navicat 的时候发现一件怪事。
: 资料列数目在没有任何动作的情况下,竟然会自己变来变去?
: 我的站台还没开放给公司同事使用,可以确定除了我以外没有其它人在用。
: 本来以为只有某张表会这样,後来发现其实还蛮多表都有这个情形。
: 以 civicrm_mailing 这张表为例,正确的列数应该是 465,
: 但是它会跳来跳去,永远都不是 465 。
: 我有撷图下来,可以参考:
: http://ronlee543.blogspot.com/2012/02/mysql-navicat-row-numbers-change.html
: 请问为什麽会这样?
虽然我没有在用 Navicat,但是依照我的使用经验,问题不在 Navicat,而是
MySQL 的 Storage engine。
我推测 Navicat 应该是使用 show table status 来抓笔数,否则,每个资料
表都下 select count(*) from ... 恐怕太慢。问题就在於并非所有的储存引
擎所回报的资料列笔数都是精确值,举例来说,MyISAM会是精确值,而InnoDB
回报的资料列笔数只是个估计值。
如果你需要真正的资料笔数,应该执行 select count(*) from ...。
一段小实验:
mysql>use SalesDB
mysql>show create table orders;
mysql>show table status like 'order%' \G
mysql>select count(*) from orders;
对於 InnoDB 来说,两个数目可能不一样,而後者才是真正的笔数。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.38.68.213
1F:→ ronlee543:原来是这样。谢谢。 02/09 18:55