鉴于原项目长期无人维护并存在一系列问题,我在此对其中一些bug做了修复,如果遇到下述问题,可以尝试使用这个项目进行编译
安装问题:
- CentOS7安装时下载不了Percona56问题(最后一步make时报错问题),参考SQLAdvisor快速入门教程
项目BUG:
- 修复了推荐的索引列使用了别名问题,代码在处理GROUP BY和ORDER BY字段时存在的bug。
- 修复了驱动表选择错误问题,原逻辑仅根据explain select * from xxx 来获取结果集大小,但是实际上可能受原始sql中where条件的影响。
- 修复嵌套子查询中忽略了子查询未推荐子查询表的索引问题。
- 修复 MySQL5.7 从执行计划中获取影响行数时报错问题(Segmentation fault)
其他:
新增了一个python脚本,方便批量执行sql(原项目中涉及到格式化换行的sql不太方便),修改其中的数据库连接信息和需要分析的SQL在根目录执行python sqladvisor_batch.py 即可。
SQLAdvisor是由美团点评公司技术工程部DBA团队(北京)开发维护的一个分析SQL给出索引优化建议的工具。它基于MySQL原生态词法解析,结合分析SQL中的where条件、聚合条件、多表Join关系 给出索引优化建议。目前SQLAdvisor在美团点评内部广泛应用,公司内部对SQLAdvisor的开发全面转到github上,开源和内部使用保持一致。
主要功能:输出SQL索引优化建议