简单的一句代码 ,花了1秒,如何优化?
- SQL code
SELECT a.OUID, a.OUName, a.OULevel, a.OUFullName, a.ParentOUID ,(SELECT COUNT(1) FROM tbEmployeeInfo tei WHERE (a.OULevel> 2 AND tei.OUIDs LIKE a.OUID+'%') or (a.OULevel< 3 AND tei.DeptOUIDs = a.OUID) ) AS 人员总数FROM tbOrganization aWHERE a.OULevel< 4ORDER BY OULevel
就是统计每个部门有多少人
[解决办法]
先查看SQL执行计划, 然后根据执行计划考虑下面的方法:
1,尝试把子查询拆出来
2,考虑在tei.DeptOUIDs和a.OULevel上面建索引