2014-10-10 89 views
0

這是一個有點複雜的查詢,它具有多個連接並重新運行大量帶有多個數據字段的記錄。假設它基本上用於檢索管理器詳細信息。數據庫性能 - 數據庫功能的左外部連接

第一套表格(已實現查詢):

選擇m.name,d.name,d.address,m.salary,m.age,...... 從管理者M,部門d ,... ..等 連接... ..

假設一個管理員可以有零個或多個員工。

比方說,我需要列出每個管理人員的所有員工姓名,以找出第一組表中沒有員工的管理人員的結果(這意味着要保留第一組表的管理員列表,因爲它是)。 然後,我必須通過「聚會」表訪問「員工」表(可能涉及更多的表)。

第二套表格的(被新連接):

這意味着有一個或多個與「僱員」,「黨」,更加入... ..等 我對此有兩種方法。

  1. 使第一組表格的左外連接到第二組 表格。
  2. 爲第二組表 創建DB級別的用戶定義函數(UDF)。然後,我必須在此UDF插入馬槽ID作爲 參數,並通過在SELECT子句中的第一套表格,呼籲採取所有員工(E1,E2,...)爲格式的字符串

請有人建議我在這兩個選項中提供數據庫性能最好的解決方案?

+0

性能問題不能一般回答。如果你想得到最好的答案,你應該說你正在使用哪個RDBMS。 – Barmar 2014-10-10 16:33:26

回答

0

轉到JOIN,使用適當的WHERE子句和索引。

數據庫引擎在優化方面要好得多。讓它做好工作。

你的方式聽起來像(n + 1)查詢死亡。

編寫一個示例查詢並要求您的數據庫解釋計劃以查看成本是多少。如果您發現表