?使用 EXPLAIN 来查看 SQL 执行计划
上个点说了 , 可以使用 EXPLAIN 来分析 SQL 的执行情况 , 如怎么发现上文中的最左匹配原则不生效呢 , 执行 「EXPLAIN+SQL 语句」可以发现 key 为 None , 说明确实没有命中索引:

文章插图
我司在提供 SQL 查询的同时 , 也贴心地加了一个 EXPLAIN 功能及 SQL 的优化建议 , 建议各大公司效仿 , 如图示:

文章插图
- 批量插入 , 速度更快
推荐用:
-- 批量插入 INSERT INTO TABLE (id, user_id, title) VALUES (1, 2, 'a'),(2,3,'b'); 不推荐用:INSERT INTO TABLE (id, user_id, title) VALUES (1, 2, 'a'); INSERT INTO TABLE (id, user_id, title) VALUES (2,3,'b'); 批量插入 SQL 执行效率高的主要原因是合并后日志量 MySQL 的 binlog 和 innodb 的事务让日志减少了 , 降低日志刷盘的数据量和频率 , 从而提高了效率 。- 慢日志 SQL 定位

文章插图
这几个参数一定要配好 , 再根据每条慢查询对症下药 , 像我司每天都会把这些慢查询提取出来通过邮件给形式发送给各个业务团队 , 以帮忙定位解决 。
小结:业务生产中可能还有很多 CASE 导致了慢查询 , 其实细细品一下 , 都会发现这些都和 MySQL 索引的底层数据 B+ 树有莫大的关系 。
总结
本文一开始花了挺大的篇幅来讲解 SQL 的规范 , 请大家务必重视这部分内部 , 良好的规范有利于团队协作 , 对于代码的阅读也比较友好 。
之后介绍了一些 SQL 的比较高级的用法 , 巧用这些技巧确实能达到事半功倍的效果 。
推荐阅读
- 微信的操作系统之路
- 淘金币推广有效果吗 淘金币推广怎么设置
- 淘宝开店的四个步骤 开淘宝网店需要注意的问题
- EasyLog:一个支持百亿级别的 Java 分布式日志组件
- 淘宝店铺直通车怎么开效果好 淘宝开直通车的详细步骤
- 10 款下载量最高的 Mac 软件分享
- Windows操作系统中的休眠模式和睡眠模式有什么区别?
- 茶叶末釉瓷器鉴别,识别仿古瓷茶具鉴别常用的简便方法
- JVM常用的命令
- TCP粘包的解决方案
