美文网首页
高性能MySQL(第三版)-第六章 1

高性能MySQL(第三版)-第六章 1

作者: 这里有颗小螺帽 | 来源:发表于2021-08-03 08:40 被阅读0次

    高性能MySQL(第三版) 是在MySQL5.5的基础上进行讲解的。
    研读了第六章 查询性能优化的1-4小节,记录一些知识点。

    • MySQL 的临时表是没有任何索引的
    • 在关联查询时,MySQL 总是从一个表开始,一直嵌套循环
    • 无论如何排序,都是一个成本很高的操作,当不能用索引获得排序结果的时候,就需要MySQL自行排序。当数据量小的时候,在内存中排序,当数据量大的时候,将数据分块存储在磁盘中排序,然后将每块的排序结果归并。不管是内存排序还是磁盘排序都成为文件排序(filesort)
    • 当查询所有列的总长度不超过参数 max_length_for_sort_data 时,MySQL使用“单次传输排序”
    • 关联查询中,有排序和limit时,5.6版本后,使用了limit,不再对所有结果排序,之前是先对所有的结果排序,再使用limit
    • MySQL 在优化阶段为每个表创建一个handle实例
    • EXISTS 子查询
    • 当查询语句很长的时候,可以调整 max_allowed_packet 的值
    • 对于 IN(),MySQL将IN()列表中的数据先进行排序,然后通过微分查找的方式来确定列表中值是否满足条件,这是一个O(log n)复杂度的操作,等价的换成OR查询的复杂度为O(n),对于IN()列表中有大量取值的时候,MySQL的处理速度将会更快。

    相关文章

      网友评论

          本文标题:高性能MySQL(第三版)-第六章 1

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