Re: [SQL ] 用Navicat看資料列數,無故變動?
※ 引述《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
→
02/09 18:55, , 1F
02/09 18:55, 1F
討論串 (同標題文章)