热门标签 | 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)


推荐阅读
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • Oracle 用户锁定问题及解决方法
    本文介绍了如何在 Oracle 数据库中检查和处理用户锁定问题,包括查询被锁定的用户、解锁用户以及调整登录失败次数限制的方法。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文总结了在SQL Server数据库中编写和优化存储过程的经验和技巧,旨在帮助数据库开发人员提升存储过程的性能和可维护性。 ... [详细]
  • 本文详细介绍了数据库并发控制的基本概念、重要性和具体实现方法。并发控制是确保多个事务在同时操作数据库时保持数据一致性的关键机制。文章涵盖了锁机制、多版本并发控制(MVCC)、乐观并发控制和悲观并发控制等内容。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 多线程基础概览
    本文探讨了多线程的起源及其在现代编程中的重要性。线程的引入是为了增强进程的稳定性,确保一个进程的崩溃不会影响其他进程。而进程的存在则是为了保障操作系统的稳定运行,防止单一应用程序的错误导致整个系统的崩溃。线程作为进程的逻辑单元,多个线程共享同一CPU,需要合理调度以避免资源竞争。 ... [详细]
  • Ext JS MVC系列一:环境搭建与框架概览
    本文主要介绍了如何在项目中使用Ext JS 4作为前端框架,并详细讲解了Ext JS 4的MVC开发模式。文章将从项目目录结构、相关CSS和JS文件的引用以及MVC框架的整体认识三个方面进行总结。 ... [详细]
  • 本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4277。作者:Bob Lee,日期:2012年9月15日。题目描述:给定n个木棍,求可以组成的不同三角形的数量,最多15根木棍。 ... [详细]
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社区 版权所有