美文网首页
2019-05-15MYsql 查询成功优化

2019-05-15MYsql 查询成功优化

作者: 括儿之家 | 来源:发表于2019-05-17 10:10 被阅读0次

    连接查询的成本

    我们前边说过,MySQL中连接查询采用的是嵌套循环连接算法,驱动表会被访问一次,被驱动表可能会被访问多次,所以对于两表连接查询来说,它的查询成本由下边两个部分构成:

        1 单次查询驱动表的成本

        2多次查询被驱动表的成本(具体查询多少次取决于对驱动表查询的结果集中有多少条记录)

    我们把对驱动表进行查询后得到的记录条数称之为驱动表的扇出(英文名:fanout)。很显然驱动表的扇出值越小,对被驱动表的查询次数也就越少,连接查询的总成本也就越低。当查询优化器想计算整个连接查询所使用的成本时,就需要计算出驱动表的扇出值,有的时候扇出值的计算是很容易的

    InnoDB以表为单位来收集统计数据,这些统计数据可以是基于磁盘的永久性统计数据,也可以是基于内存的非永久性统计数据。

    innodb_stats_persistent控制着使用永久性统计数据还是非永久性统计数据;innodb_stats_persistent_sample_pages控制着永久性统计数据的采样页面数量;innodb_stats_transient_sample_pages控制着非永久性统计数据的采样页面数量;innodb_stats_auto_recalc控制着是否自动重新计算统计数据。

    我们可以针对某个具体的表,在创建和修改表时通过指定STATS_PERSISTENT、STATS_AUTO_RECALC、STATS_SAMPLE_PAGES的值来控制相关统计数据属性。

    innodb_stats_method决定着在统计某个索引列不重复值的数量时如何对待NULL值。

    相关文章

      网友评论

          本文标题:2019-05-15MYsql 查询成功优化

          本文链接:https://www.haomeiwen.com/subject/lrcmaqtx.html