我有一个表,该表具有唯一的字符串列和部门描述。唯一字符串列的长度表示部门层次结构,因此4个字符的长度是最低级别,而2个字符的长度是最高级别。
我的目标是创建新变量,以便可以显示每一行的层次结构级别和相应的部门描述,并将这些新列用作过滤器
我的SQL代码正在运行;但是,生成1300行表的结果需要花费20多分钟的时间。
是否有更好的方法来优化此查询?请注意,我只使用一张表格并创建多个副本来创建最终版本。
m.UniqueDescription as "Department Code",
m.DepartmentDescription as "Department",
Left(m.UniqueDescription,2) as "Level 2 Hierarchy",
Left(m.UniqueDescription,3) as "Level 3 Hierarchy",
Left(m.UniqueDescription,4) as "Level 4 Hierarchy",
l2. DepartmentDescription as "L2 Department",
l3. DepartmentDescription as "L3 Department",
l4. DepartmentDescription as "L4 Department"
From department_table m
LEFT JOIN department_table l2
ON Left(m.UniqueDescription,2) = l2.UniqueDescription
LEFT JOIN department_table l3
ON Left(m.UniqueDescription,3) = l3.UniqueDescription
LEFT JOIN department_table l4
ON Left(m.UniqueDescription,4) = l4.UniqueDescription"
下面是我想要实现的输出:
答案 0 :(得分:0)
首先,数字ID的结构和缺失不是一个好习惯
检查索引的创建。
请勿在{{1}}或ON
子句的左侧使用函数,这不允许执行计划者为这些列建立索引。
使用WHERE
代替FUNCTION(LeftTable.Column) = value