热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OPTION子句(TransactSQL)

OPTION子句(Transact-SQL)20170316作者本主题适用于:SQLServer(从2008开始)AzureSQL数据库A

OPTION 子句 (Transact-SQL)

本主题适用于:yesSQL Server(从 2008 开始)yesAzure SQL 数据库yesAzure SQL 数据仓库yes并行数据仓库

指定应在整个查询中使用所指定的查询提示。 每个查询提示只能指定一次,但允许指定多个查询提示。 使用该语句只能指定一个 OPTION 子句。

可以在 SELECT、DELETE、UPDATE 和 MERGE 语句中指定此子句。

主题链接图标 TRANSACT-SQL 语法约定

语法

-- Syntax for SQL Server and Azure SQL Database [ OPTION ( [ ,...n ] ) ]

-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse OPTION ( [ ,...n ] ) ::= LABEL = label_name | ::= HASH JOIN | LOOP JOIN | MERGE JOIN | FORCE ORDER | { FORCE | DISABLE } EXTERNALPUSHDOWN

参数

query_hint
关键字,指示优化器提示用于自定义数据库引擎处理语句的方式。 有关详细信息,请参阅查询提示 (Transact-SQL)。

示例

A. GROUP BY 子句中使用的 OPTION 子句

以下示例说明了如何将 OPTION 子句与 GROUP BY 子句一起使用。

USE AdventureWorks2012;
GO
SELECT ProductID, OrderQty, SUM(LineTotal) AS Total
FROM Sales.SalesOrderDetail
WHERE UnitPrice <$5.00
GROUP BY ProductID, OrderQty
ORDER BY ProductID, OrderQty
OPTION (HASH GROUP, FAST 10);
GO

示例&#xff1a; Azure SQL 数据仓库和 并行数据仓库

B. 替换的 OPTION 子句中的标签的 SELECT 语句

下面的示例演示一个简单 SQL 数据仓库替换的 OPTION 子句中的标签的 SELECT 语句。

-- Uses AdventureWorks SELECT * FROM FactResellerSales OPTION ( LABEL &#61; &#39;q17&#39; );

C. 使用查询提示的 OPTION 子句中的 SELECT 语句

下面的示例演示使用哈希联接的查询提示的 OPTION 子句中的 SELECT 语句。

-- Uses AdventureWorks SELECT COUNT (*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey &#61; b.CustomerKey)
OPTION (HASH JOIN);

D. 使用标签和多个查询提示的 OPTION 子句中的 SELECT 语句

下面的示例是 SQL 数据仓库包含一个标签和多个查询提示的 SELECT 语句。 当在计算节点上运行查询 SQL Server将根据策略中应用的哈希联接或合并联接&#xff0c; SQL Server决定是最大程度优化。

-- Uses AdventureWorks SELECT COUNT (*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey &#61; b.CustomerKey)
OPTION ( Label &#61; &#39;CustJoin&#39;, HASH JOIN, MERGE JOIN);

E. 查询视图时使用查询提示

下面的示例创建名为 CustomerView 的视图&#xff0c;然后使用引用的视图和表的查询中的哈希联接的查询提示。

-- Uses AdventureWorks CREATE VIEW CustomerView
AS
SELECT CustomerKey, FirstName, LastName FROM ssawPDW..DimCustomer; SELECT COUNT (*) FROM dbo.CustomerView a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey &#61; b.CustomerKey)
OPTION (HASH JOIN); DROP VIEW CustomerView;

F. 使用嵌套 select 语句和查询提示的查询

下面的示例演示包含嵌套 select 语句和查询提示的查询。 查询提示将全局应用。 不允许查询提示追加到嵌套 select 语句。

-- Uses AdventureWorks CREATE VIEW CustomerView AS
SELECT CustomerKey, FirstName, LastName FROM ssawPDW..DimCustomer; SELECT * FROM (
SELECT COUNT (*) AS a FROM dbo.CustomerView a
INNER JOIN dbo.FactInternetSales b
ON ( a.CustomerKey &#61; b.CustomerKey )) AS t
OPTION (HASH JOIN);

G. 强制实施联接顺序在查询中的顺序相匹配

下面的示例使用强制 ORDER 提示以强制实施查询计划&#xff0c;使用指定的查询联接顺序。 这将提高某些查询; 上的性能并非所有查询。

-- Uses AdventureWorks -- Obtain partition numbers, boundary values, boundary value types, and rows per boundary
-- for the partitions in the ProspectiveBuyer table of the ssawPDW database.
SELECT sp.partition_number, prv.value AS boundary_value, lower(sty.name) AS boundary_value_type, sp.rows
FROM sys.tables st JOIN sys.indexes si ON st.object_id &#61; si.object_id AND si.index_id <2
JOIN sys.partitions sp ON sp.object_id &#61; st.object_id AND sp.index_id &#61; si.index_id
JOIN sys.partition_schemes ps ON ps.data_space_id &#61; si.data_space_id
JOIN sys.partition_range_values prv ON prv.function_id &#61; ps.function_id
JOIN sys.partition_parameters pp ON pp.function_id &#61; ps.function_id
JOIN sys.types sty ON sty.user_type_id &#61; pp.user_type_id AND prv.boundary_id &#61; sp.partition_number
WHERE st.object_id &#61; (SELECT object_id FROM sys.objects WHERE name &#61; &#39;FactResellerSales&#39;)
ORDER BY sp.partition_number
OPTION ( FORCE ORDER )
;

H. 使用 EXTERNALPUSHDOWN

下面的示例在外部 Hadoop 表上强制到 MapReduce 作业的 WHERE 子句的下推。

SELECT ID FROM External_Table_AS A
WHERE ID <1000000
OPTION (FORCE EXTERNALPUSHDOWN);

下面的示例可防止对外部 Hadoop 表上的 MapReduce 作业的 WHERE 子句的下推。 WHERE 子句应用其中 PDW 到返回所有行。

SELECT ID FROM External_Table_AS A
WHERE ID <10
OPTION (DISABLE EXTERNALPUSHDOWN);

另请参阅

提示 (Transact SQL ) 
SELECT (Transact-SQL) 
UPDATE (Transact-SQL) 
合并 (Transact SQL ) 
DELETE (Transact-SQL)


推荐阅读
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 本文介绍了在MySQL8.0中如何查看性能并解析SQL执行顺序。首先介绍了查询性能工具的开启方法,然后详细解析了SQL执行顺序中的每个步骤,包括from、on、join、where、group by、having、select distinct、union、order by和limit。同时还介绍了虚拟表的概念和生成过程。通过本文的解析,读者可以更好地理解MySQL8.0中的性能查看和SQL执行顺序。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
author-avatar
yiqing020308
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有