[英]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.