SQL Query性能查询



我有一个层次结构如下集团公司部门成本中心

表名:组织结构Id, ParentId, Level, Type

在我的员工视图中,我有员工成本中心,部门,公司

我需要帮助编写性能更好的查询,以查找层次结构中特定节点的员工(可以是集团/公司/部门/成本中心)

  Select * from vw_Employee  emp
    Where emp.CostCentreId = @NodeId 
    OR emp.DepartmentId=@NodeId 
    OR emp.CompanyId=@NodeId 
    OR emp.GroupId= @NodeId

这里的"OR"语句的数量使查询非常慢。

是否有更好的方法或其他方法来有效地处理?

使用OR in条件会跳过索引。替换为UNION:

Select * 
from vw_Employee  emp
Where emp.CostCentreId = @NodeId 
UNION
Select * 
from vw_Employee  emp
Where emp.DepartmentId=@NodeId 
UNION
Select * 
from vw_Employee  emp
Where emp.CompanyId=@NodeId 
UNION
Select * 
from vw_Employee  emp
Where emp.GroupId= @NodeId

最新更新