【问题标题】:How to Create index for cte如何为 cte 创建索引
【发布时间】:2016-11-23 12:28:15
【问题描述】:

我有一个问题:

With Cte as (some code)

Select * 
from Cte
order by id 

我可以为此 cte 创建索引吗?

我使用的是 ms SQL Server 2005

谢谢。

【问题讨论】:

  • 你不能,CTE就像一个动态视图里面的语句。您可能需要创建一个临时表并为其编制索引。
  • CTE 不会创建任何临时表或可以被索引的东西。它将在执行期间使用表的索引。
  • 但是,您可以在 cte 的代码中为表创建索引

标签: sql sql-server sql-server-2005


【解决方案1】:

如上所述,不能将索引添加到 CTE。

但是,在 CTE 选择中,在连接字段上添加 ORDER BY 子句可以减少执行时间。

您还需要添加 SELECT TOP 100 PERCENT 以允许在 CTE 选择中使用 ORDER BY。

【讨论】:

    【解决方案2】:

    您可以考虑使用物化/索引视图作为底层而不是 CTE。它需要您提前创建 DDL,但如果查询性能很重要,它可能会有所帮助。 另外,请记住,由于架构绑定要求,您将无法更改基础表。

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 2017-07-31
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多