论索引对复杂sql语句的重要性(以mysql为例)

最近在CRM系统的报表时,使用了一些比较复杂的sql查询语句,使得查询性能低下。

先来一个相对比较简单的复杂sql查询语句

论索引对复杂sql语句的重要性(以mysql为例)下图是这条sql语句的说明

论索引对复杂sql语句的重要性(以mysql为例)

这条sql语句在没有设置索引、数据量少的时候(biz_order_audit表也就几百条,biz_order表1w+条)也需要挺长时间1.544s

论索引对复杂sql语句的重要性(以mysql为例)

有人觉得1.544s很短,那是在这么低的数据量的情况下呢。一般中大型公司的CRM系统的数据量远远大于的,因此造成查询时间也大大的增加。下图是在biz_order表对store_id字段设置索引后的查询结果

论索引对复杂sql语句的重要性(以mysql为例)

可以看到只有0.044s,足足快了1.5s。

尤其可见设置索引的必要性。在使用频率高的表中对常用的查询字段应设置索引,这样子可以大大提升查询速度。

(以上纯属个人工作中的总结,不喜勿喷!如有错误,请指出!)