慢 SQL 分析与优化( 四 )


  • 只能用于range、 ref、 eq_ref、ref_or_null访问方法;
  • 只能用于InnoDB和 MyISAM存储引擎及其分区表;
  • 对存储引擎来说,索引下推只适用于二级索引(也叫辅助索引);
索引下推的目的是为了减少回表次数,也就是要减少 IO 操作 。对于的聚簇索引来说,数据和索引是在一起的,不存在回表这一说 。
  • 引用了子查询的条件不能下推;
  • 引用了存储函数的条件不能下推,因为存储引擎无法调用存储函数 。
7、思考
1)MySQL 一张表到底能存多少数据?
2)为什么要控制单行数据大小?
3)优化案例 4 中优化前的 SQL 为什么走不到索引?
四、总结
抛开数据库硬件层面,数据库表设计、索引设计、业务代码逻辑、分库分表策略、数据归档策略都对 SQL 执行效率有影响,我们只有在整个设计、开发、运维阶段保持高度敏感、追求极致,才能让我们系统的可用性、伸缩性不会随着业务增长而劣化 。
>>>>参考资料
  • https://help.aliyun.com/document_detail/311122.html
  • https://blog.csdn.NET/qq_32099833/article/details/123150701
  • https://www.cnblogs.com/tufujie/p/9413852.html
作者丨伍楼华
来源丨公众号:字节跳动技术团队(ID:BytedanceTechBlog)

【慢 SQL 分析与优化】


推荐阅读