SQL Server-可选条款

问题描述 投票:0回答:2

有人可以告诉我OPTION子句在SQL Server 2012中是否可用。

我看不到任何文档来介绍它的引入时间。

我想在SQL Server 2012数据库上使用OPTION (LOOP JOIN) ...

谢谢

sql sql-server
2个回答
0
投票

Gordon Linoff所述,是的-该选项(循环联接)在SQL 2012中可用。

我在Azure中启动了一个新的SQL数据库,将兼容性级别更改为110(SQL 2012),并运行了两个查询。同时显示了两个执行计划的屏幕截图。

select * from saleslt.customer c
inner join SalesLT.CustomerAddress ca
    on c.CustomerID = ca.CustomerID

select * from saleslt.customer c
inner join SalesLT.CustomerAddress ca
    on c.CustomerID = ca.CustomerID
OPTION (LOOP JOIN);

Loop Join Execution Plan

[正如其他人所说,我通常也不会强迫提示,而是回答您所陈述的问题:是的,可以使用。


0
投票

有人可以告诉我OPTION子句在SQL Server中是否可用2012。

我看不到介绍它的任何文档。

是,它在SQL Server 2012中可用。OPTION子句至少返回到SQL Server 7.0

我想在SQL Server 2012数据库上使用OPTION (LOOP JOIN) ...

OPTION子句的可用性并不意味着OPTION (LOOP JOIN)可用。这些已添加到各种产品版本中。

下面是SQL Server 2000提示上的BOL条目

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9sVFZVby5wbmcifQ==” alt =“在此处输入链接描述”>

在2000年,指定连接算法的唯一方法是在单个连接级别(这也确定了连接顺序)。

到2005年BOL记录了以下更广泛的查询提示选择,因此该版本提供了OPTION (LOOP JOIN)

<query_hint > ::= 
{ { HASH | ORDER } GROUP 
  | { CONCAT | HASH | MERGE } UNION 
  | { LOOP | MERGE | HASH } JOIN 
  | FAST number_rows 
  | FORCE ORDER 
  | MAXDOP number_of_processors 
  | OPTIMIZE FOR ( @variable_name = literal_constant [ , ...n ] ) 
  | PARAMETERIZATION { SIMPLE | FORCED }
  | RECOMPILE
  | ROBUST PLAN 
  | KEEP PLAN 
  | KEEPFIXED PLAN
  | EXPAND VIEWS 
  | MAXRECURSION number 
  | USE PLAN N'xml_plan'
} 
© www.soinside.com 2019 - 2024. All rights reserved.