如何近似mysql行数

时间:2015-02-11 06:04:23

标签: mysql

我正在尝试查看当前批处理脚本中已完成的行数。但是,当我尝试计算行数时,它会无限期挂起(此表上大约有100个插入一秒钟)。该表约为3M行。这就是我正在做的事情:

select count(*) from my_table where is_done=1

解释看起来也很不错:

explain select count(*) from my_table where is_done=1

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  mturk_imdbentry ref is_done is_done 1   const   1471833 Using index

为什么发生'锁定',导致我无法检索计数?然后,我将如何估算计数?

1 个答案:

答案 0 :(得分:0)

我曾经在Oracle上遇到类似的问题,使用了非常大的插入脚本。我的解决方法是这样的:

count = 0;
while(not done) {
   do insert;
   if( count mod 1000 = 0) then
       update count in secondary log table;
   end if;
   count = count + 1;
} 

如果我做100MM插页,我可以留意进度的步伐,并给自己估计完成。