mysql中的行解释大于实际行

时间:2016-12-15 05:31:23

标签: mysql performance explain

DB:Mysql 5.6,Innodb,the index

解释结果: explain result

真实数据: enter image description here

我很困惑16462900来自哪里。当我设置6个wave_no时,解释结果中的行为6: enter image description here

3 个答案:

答案 0 :(得分:1)

EXPLAIN输出中rows的值是对要检查的行数的估计。

根据计算的统计数据,这只是一个估计值。

参考文献:

http://dev.mysql.com/doc/refman/5.6/en/explain-output.html

http://dev.mysql.com/doc/refman/5.6/en/innodb-persistent-stats.html

答案 1 :(得分:1)

使用这个'复合材料'提高绩效的指数:

data _null_;
   set filelist;
   infile fixed filevar=filename end=eof truncover ;
   do while (not eof);
     input &varlist ;
     file '/myoutpath/newfile.txt' dsd dlm='|' ;
     put (_all_) (:);
   end;
run;

然后移除INDEX(com_uid, exchange_state, wave_no)

统计数据有时相差甚远。如果存在FORCETEXT列,这些列存储在其他地方,则会发生这种情况,从而弄乱了算法。别担心。

可以BLOB重新计算统计数据,但这可能无法改善统计数据。

答案 2 :(得分:0)

我大学说这个是因为表碎片,你可以从谷歌搜索,这里是one

<块引用>

MySQL 表,包括 MyISAM 和 InnoDB 这两种最常见的类型,在随机插入和删除数据时会出现碎片。碎片可能会在您的表格中留下大洞,扫描表格时必须读取这些块。因此,优化表可以使全表扫描和范围扫描更加高效。

这是官方网站上的 article