2012-10-19 60 views
0

嗨,我不明白爲什麼我的MYSQL行爲奇怪。爲什麼行中的差異數?

在這裏,我想知道的表中存在site_details序記錄數得到這個我已經執行 select count(*) from site_details; 我已經得到了結果作爲

+----------+ 
| count(*) | 
+----------+ 
|  2024 | 
+----------+ 

然後去驗證我一再執行 mysql> SHOW TABLE STATUS FROM msp LIKE 'site_details'\G 我有結果像

*************************** 1. row *************************** 
      Name: site_details 
     Engine: InnoDB 
     Version: 10 
    Row_format: Compact 
      Rows: 1612 
Avg_row_length: 71 
    Data_length: 114688 
Max_data_length: 0 
    Index_length: 81920 
     Data_free: 7340032 
Auto_increment: NULL 
    Create_time: 2012-10-01 08:05:09 
    Update_time: NULL 
    Check_time: NULL 
     Collation: utf8_general_ci 
     Checksum: NULL 
Create_options: 
     Comment: 
1 row in set (0.00 sec) 

鄂畢服務行之間的計數值差值計數兩個查詢

,然後在不修改我的表我已經再次執行相同的查詢 mysql> SHOW TABLE STATUS FROM msp LIKE 'site_details'\G 和奇怪的是我有喜歡

*************************** 1. row *************************** 
      Name: site_details 
     Engine: InnoDB 
     Version: 10 
    Row_format: Compact 
      Rows: 1934 
Avg_row_length: 59 
    Data_length: 114688 
Max_data_length: 0 
    Index_length: 81920 
     Data_free: 7340032 
Auto_increment: NULL 
    Create_time: 2012-10-01 08:05:09 
    Update_time: NULL 
    Check_time: NULL 
     Collation: utf8_general_ci 
     Checksum: NULL 
Create_options: 
     Comment: 
1 row in set (0.00 sec) 

結果觀察行上述查詢的列我已經得到類似2024的結果1612 1934

爲什麼會出現這種情況?

回答

1
select count(*)... 

給你行的實際數量現在

select count(1)... 

給出的行數,其中第一列不爲空

其他是基於數據庫字典的度量標準,它不是實時更新,而是依賴於國家統計集成電路等

在這裏看到的信息在COUNT

http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_count

所以,如果你想行的準確數量 - 重複,所有 - 現在(開交易也許是例外,這取決於isaolation level),使用COUNT(*)

1

MySQL Docs

的行數。一些存儲引擎(例如MyISAM)存儲了精確計數 。對於其他存儲引擎,如InnoDB,這個值近似爲 ,並且可能與實際值相差多達40%到50%。在這種情況下,請使用SELECT COUNT(*)計算精確的 。

所以,它是InnoDB的正常行爲數據庫

相關問題