相关疑难解决方法(0)

为什么没有分区消除

我有一个包含 3 行的临时表 #termin

当我执行以下查询时

SELECT t.termin, ttw.tourid, twt.va_nummer_int
  FROM #term AS t
 INNER JOIN plinfo.t_touren_werbeflaechentermine AS ttw
     ON ttw.termin = t.termin
  INNER JOIN wtv.t_werbeflaechentermine AS twt 
     ON twt.jahr   = t.jahr
    AND twt.termin = t.termin
    AND twt.ID_Wt  = ttw.id_wt
    GROUP BY t.termin, ttw.tourid, twt.va_nummer_int
Run Code Online (Sandbox Code Playgroud)

我会得到以下执行计划: 在此处输入图片说明

每个表都使用匹配的索引进行连接。两个表都由 ps_termin(termin) 进行分区。

对于第一个表 (t_touren_werbeflaechentermine),它执行分区消除并仅读取行的一个子集,而对于第二个表 (t_werbeflaechentermine),它扫描整个索引 ( jahr, termin, id_wt include (va_nummer_int))。

所以我的问题是:为什么它是索引扫描(而不是搜索),为什么它不消除第二个表的分区。

PS:在WITH (FORCESEEK)第二个表上使用时,它会在执行计划中切换两个表并对第一个表进行全索引扫描......

PPS:可以在此处找到执行计划

sql-server partitioning sql-server-2014

6
推荐指数
1
解决办法
1259
查看次数

标签 统计

partitioning ×1

sql-server ×1

sql-server-2014 ×1