保持查询语法指示的联接顺序Option(Force order)

Option(Force order)

今天和大家分享一下 SQL中强制执行联接顺序Option(Force Order)

一、SQL本身SQL引擎优化已经做的非常好了,但是也有默认的多表连接引擎效果达不到我们期望的值,

  因此我们需要强制执行我们多表联接顺序。

  eg:

CREATE TABLE #Student (   RowId int identity(1,1),   Name varchar(50),   Age int ) GO

CREATE Table #Course (    StudentNo int ,    CourseType Varchar(50) ) GO

insert INTO #Student VALUES(‘Tom‘,21)

insert INTO #Student VALUES(‘Jerry‘,22)

insert INTO #Student VALUES(‘John‘,23)

INSERT INTO #Course VALUES(1,‘语文‘)

INSERT INTO #Course VALUES(1,‘数学‘)

INSERT INTO #Course VALUES(1,‘英语‘)

INSERT INTO #Course VALUES(1,‘化学‘)

INSERT INTO #Course VALUES(2,‘语文‘)

INSERT INTO #Course VALUES(2,‘数学‘)

INSERT INTO #Course VALUES(3,‘英语‘)

INSERT INTO #Course VALUES(3,‘化学‘)

GO

由上图结果 我们明显发现 SQL搜索引擎默认 都选择#Student表做我们的基表 执行内连接

但实际上我们第二段SQL想#Course做为我们的基表 执行

这时 我们在需要 Option(Force Order) 强制按照我们的连接顺序执行

SQL默认引擎优化不是最优的执行计划时 此语句就是我们期望的了

时间: 2024-12-15 15:27:37

保持查询语法指示的联接顺序Option(Force order)的相关文章

步步深入:MySQL架构总览->查询执行流程->SQL解析顺序

前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一下其中的知识. 一.MySQL架构总览: 架构最好看图,再配上必要的说明文字. 下图根据参考书籍中一图为原本,再在其上添加上了自己的理解. 从上图中我们可以看到,整个架构分为两层,上层是MySQLD的被称为的‘SQL Layer’,下层是各种各样对上提供接口的存储引擎,被称为‘Storage Engin

MySQL架构总览->查询执行流程->SQL解析顺序

前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一下其中的知识. 一.MySQL架构总览: 架构最好看图,再配上必要的说明文字. 下图根据参考书籍中一图为原本,再在其上添加上了自己的理解. 从上图中我们可以看到,整个架构分为两层,上层是MySQLD的被称为的'SQL Layer',下层是各种各样对上提供接口的存储引擎,被称为'Storage Engin

LINQ to Objects系列(2)两种查询语法介绍

LINQ为我们提供了两种查询语法,分别是查询表达式和查询方法语法.这篇文章分为以下几个方面进行总结. 1,一个包含两种查询语法的简单示例 2,查询表达式的结构 3,查询方法相关的运算符 一个包含两种查询语法的简单示例 一个LINQ查询既可以使用查询表达式实现,也可以用查询方法实现,还可以同时组合两种查询.下面是一个简单的示例,代码如下. namespace LINQDemo3 { class Program { static void Main(string[] args) { int[] nu

EF基于方法的查询语法

实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发人员使用 Visual Basic 或 Visual C# 根据实体框架概念模型编写查询.针对实体框架的查询由针对对象上下文执行的命令目录树查询表示.LINQ to Entities 将语言集成查询 (LINQ) 查询转换为命令目录树查询,针对实体框架执行这些查询,并返回可同时由实体框架和 LINQ 使

LINQ to Entities 查询语法

转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发人员使用 Visual Basic 或 Visual C# 根据实体框架概念模型编写查询.针对实体框架的查询由针对对象上下文执行的命令目录树查询表示.LINQ to En

solr查询语法(solr query)

1. CoreQueryParam查询的参数  1) q: 查询字符串,必须的. 2) q.op: 覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定. 3) df: 默认的查询字段,一般默认指定. 4) qt: query type,指定查询使用的Query Handler,默认为"standard". 5) wt: writer type.指定查询输出结构格式,默认为"

T-SQL的高级查询语法

既然是高级查询,那么使用函数也将是必不可少的,常见的函数类型有以下几种: 常见的高级查询语法举例: 显示test表中所有运维工程师的姓名和基本工资,要求以下格式:运维工程师XXX的基本工资是:XXXXX元.语法格式如下: select '运维工程师'+姓名+'的基本工资是:'+CAST(基本工资 as varchar(10))+'元'from test where 职务='运维工程师' 显示距离当前10天之后的日期和时间: select DATEADD(DD ,10,GETDATE()) 显示t

MySQL查询in操作 查询结果按in集合顺序显示_Mysql_脚本之家

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

LINQ:开始使用 LINQ(五)- LINQ 中的查询语法和方法语法

开始使用 LINQ(五)- LINQ 中的查询语法和方法语法 在表示语言集成查询 (LINQ) 使用 LINQ 性查询语法,文档中的多数查询编写.但是,编译代码时,必须将查询语法转换为方法,这就需要 .NET 公共语言运行时 (CLR).这些方法调用标准查询运算符的名称类似 Where.Select.GroupBy.Join.Max和 Average.可以调用这些方法直接使用方法语法而不是查询语法. 查询语法和方法语法语义相同,但是,许多人员发现查询语法更简单.更易于阅读.某些查询必须表示为方法