近期在工作中发现某项目中有个模块查询效率很低,应要求优化这条sql。
1.根据模块找到对应的sql,查看其执行计划发现如下:
2.看了执行计划后发现,第一个HASH JOIN 用了大部分时间 因两张表数据量都是200W 左右。200W的全表扫描然后做HASH JOIN 暂用了大部分时间。
3.然后根据sql 看了后,然后实验了后,发现VW_NSO_1结果集很小,如果先河BK_DEPLOY_INFO 做NESTED LOOP 在和BK_PERSION_INFO 走索引的hash 会很快。
4.查看执行计划找到对应的查询块内容编写hint
5.得到的结果如下,速度快了很多。