DBA大牛MySQL优化心得,语句执行加速就是这么简单!
一打开科技类论坛,最常看到的文章主题就是MySQL性能优化了,为什么要优化呢? 因为:
就是咱们说的“性能问题”,程序员一遇到它总是焦头烂额! 今天小编对MySQL优化总结了一些心得,希望在大家之后的工作中能有所有帮助! like 前导符优化 like模糊查询形如'%AAA%'和'%AAA'将不会使用索引,但是业务上不可避免可能又需要使用到这种形式。 通常的方法有两种:
in 和 exist 如果查询的两个表大小相当,那么用in和exists差别不大。 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B(大表) 示例一: 示例二: not in 和 not exist 如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not exist 的子查询依然能用到表上的索引。所以无论哪个表大,用not exists都比not in要快! 子查询优化
straight_join mysql hint: Mysql 优化器在处理多表的关联的时候,很有可能会选择错误的驱动表进行关联,导致了关联次数的增加,从而使得sql语句执行变得非常的缓慢。 这个时候需要有经验的DBA进行判断,选择正确的驱动表,这个时候 straightjoin 就起了作用了,下面我们来看一看使用straight_join进行优化的案例: 尝试采用user表做驱动表,使用straight_join强制连接顺序: 高效分页 传统分页:
limit原理:
推荐分页: 复杂关联SQL的优化
force index 有时优化器可能由于统计信息不准确等原因,没有选择最优的执行计划,可以人为改变mysql的执行计划,例如: count的优化 按照效率排序的话,count(字段) 总结 MySQL 性能优化 最主要是理解 innodb 的索引原理及结构及 SQL 的执行计划,在不断累积经验的基础上熟能生巧。 【编辑推荐】
点赞 0 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |