簡體   English   中英

SQL查詢性能查詢

[英]SQL Query Performance Query

我有一個類似以下集團公司部門成本中心的層次結構,這些層次結構存儲在數據庫中,如下表結構所示。

表名稱: OrgHierarchy列: Id,ParentId,級別,類型

在“我的員工”視圖中,我有員工成本中心,部門,公司集團

在編寫性能更好的查詢以查找層次結構中某個特定節點的員工時,我需要幫助(可以是組/公司/部門/成本中心)

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

在這里,“ OR”語句的數量使查詢非常慢。

有沒有更好的方法可以有效地處理這種情況?

在條件中使用OR會使索引被跳過。 將其替換為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

是一個好問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM