SQL查询需要20分钟才能完成,并且仅包含1300行

时间:2019-02-15 18:25:42

标签: sql-server

我有一个表,该表具有唯一的字符串列和部门描述。唯一字符串列的长度表示部门层次结构,因此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"


下面是我想要实现的输出:

Table Format

1 个答案:

答案 0 :(得分:0)

首先,数字ID的结构和缺失不是一个好习惯

检查索引的创建。

请勿在{{1​​}}或ON子句的左侧使用函数,这不允许执行计划者为这些列建立索引。

使用WHERE代替FUNCTION(LeftTable.Column) = value