【发布时间】:2017-04-30 15:16:08
【问题描述】:
【问题讨论】:
标签: mysql performance explain
【问题讨论】:
标签: mysql performance explain
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
【讨论】:
rows 报告的值可能大于(或小于)表中的行数。这不是 准确 的行数。优化器估计要检查的行数。 (估计有很多不同的原因有很多......统计信息不是最新的,InnoDB 用于统计的页面上的键值分布等。)你问的问题是“[行在哪里EXPLAIN 输出中的值] 来自?”它来自优化器,基于表/索引统计信息。
IDX_COM_WAVE 索引。
使用此“复合”索引来提高性能:
INDEX(com_uid, exchange_state, wave_no)
并删除FORCE。
统计数据有时相差甚远。如果有 TEXT 或 BLOB 列存储在其他地方,则尤其会发生这种情况,从而弄乱了算术。不用担心。
您可以执行ANALYZE TABLE 重新计算统计数据,但这可能不会改善统计数据。
【讨论】: