sql调优-1

最近在项目投产其前的性能测试中发现的一个sql性能问题:

1、sql语句如下:

SELECT

  count(0)
FROM
  rd_task_info rti
LEFT JOIN rd_task_scheduling rts ON rti.tenants_no = rts.tenants_no
  AND rti.res_devlop_missin_internl_no = rts.res_devlop_missin_internl_no
LEFT JOIN biz_reqrmnt_task_relation btr ON rti.tenants_no = btr.tenants_no
  AND rti.res_devlop_missin_internl_no = btr.res_devlop_missin_internl_no
LEFT JOIN business_demand_info bdi ON bdi.tenants_no = btr.tenants_no
  AND bdi.biz_reqrmnt_internl_no = btr.biz_reqrmnt_internl_no
WHERE
  rti.tenants_no = 'SCRCU'
  AND rti.valid_flg = '1';

2、分析与优化:

  经过查看表结构,发现此sql语句中表rts的查询条件字段走的是主键索引(tenants_no,res_devlop_missin_internl_no ),表bdi的查询条件字段也是走的主键索引(tenants_no ,biz_reqrmnt_internl_no ),而表btr的查询条件字段没有走主键索引(tenants_no,biz_reqrmnt_internl_no,res_devlop_missin_internl_no)(表btr也没有其他的索引)。

  为表btr创建了一个普通索引index(tenants_no,res_devlop_missin_internl_no),未建索引index之前查询用时在3秒左右,新建索引index后查询用时30毫秒左右,显著的提升了查询速度。

原文地址:https://www.cnblogs.com/kylyww/p/14137001.html