SQL Server:什么会触发执行计划?

时间:2011-04-10 09:24:14

标签: sql sql-server sql-server-2008 sql-execution-plan

如果我有陈述

DECLARE @i INT;
DECLARE @d NUMERIC(9,3);
SET @i = 123;
SET @d = @i;
SELECT @d;

我包含实际执行计划并运行此查询,我没有得到执行计划。只有在批处理中有FROM语句时,查询才会触发执行计划吗?

4 个答案:

答案 0 :(得分:3)

简单答案是,如果没有表访问权限,您将无法获得执行计划。

执行计划是优化器生成的:它根据索引,统计信息等计算满足查询的最佳方法。

上面的内容很简单,没有表格访问权限。你为什么需要一个计划?

编辑:

根据Lucero在评论中的示例

,派生表是表访问权限

编辑2:

“普通”表访问提供持续扫描,而不是真正的扫描或搜索:

  • SELECT * FROM sys.tables WHERE 1=0
  • Lucero的评论中的例子

答案 1 :(得分:1)

你的意思是什么会触发执行计划?另外我不明白我包含实际执行计划并运行此查询,我没有得到执行计划。希望这个链接可以帮到你。

  1. SQL Tuning Tutorial - Understanding a Database Execution Plan (1)

答案 2 :(得分:1)

我认为只要需要执行基于集合的操作,就会生成查询计划。

答案 3 :(得分:1)

是的,你需要一个from子句。

你可以这样做

declare @i int
declare @d numeric(9,3)
set @i = 123

select @d = @i
from (select 1) as x(x)

select @d

在执行计划中,你会看到这个

<ScalarOperator ScalarString="CONVERT_IMPLICIT(numeric(9,3),[@i],0)">