首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

多表关联查询过滤条件写在on与where后的区别

SQL优化过程中,发现开发人员在写多表关联查询的时候,对于谓词过滤条件的写法很随意,写在on后面与where后面的情况均有,这可能会导致没有理解清楚其真正的含义而无法得到期望的结果。...多表关联连接方式有inner join、left join、right join、full join四种,下面通过实验来说明不同连接方式谓词放在on与where后的效果与影响。...而且我们发现t1表上自动加上了id条件,这是因为有t1.id=t2.id等值连接,如果t1表上id列有索引,性能就能看出差别来了。...(2)两个表的谓词都放在where后面: 这种情况CBO将其转换为内连接,先过滤再关联。...(4)左表谓词放在where后面,右表放在on后面: 这种情况转换为左外连接,也是先对两表过滤后再关联。 总结 1.对于内连接inner join,两个表的谓词条件放在on与where后面相同。

4.8K41

Java后端开发规范(基于阿里开发规范)

三、代码格式 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果 是非空代码块则: 1) 左大括号前不换行。 2) 左大括号后换行。 3) 右大括号前换行。...【强制】在 if/else/for/while/do 语句中必须使用大括号。...说明:很多 if 语句内的逻辑相当复杂,阅读者需要分析条件表达式的最终结果,才能明确什么 样的条件执行什么样的语句,那么,如果阅读者分析逻辑表达式错误呢?...说明:代码与注释更新不同步,就像路网与导航软件更新不同步一样,如果导航软件严重滞后, 就失去了导航的意义。 【参考】谨慎注释掉代码。在上方详细说明,而不是简单地注释掉。如果无用,则删除。...需要 join 的字段,数据类型必须绝对一致;多表关联查询时, 保证被关联的字段需要有索引。 说明:即使双表 join 也要注意表索引、SQL 性能。

86621
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    工程师笔试题2(答案解析)

    A.Java 程序的 main 方法必须写在类里面 B.Java 程序中可以有多个 main方法 C.Java 程序的 main 方法中,如果只有一条语句,可以不用大括号{}括起来 D.Java 程序中类名必须与文件名一样...对于选项 B,构造方法必须与类名相同,但是方法名也可以与类名相同。...A.Java 程序的 main 方法必须写在类里面 B.Java 程序中可以有多个 main方法 C.Java 程序的 main 方法中,如果只有一条语句,可以不用大括号{}括起来 D.Java 程序中类名必须与文件名一样...在 Java 语言中,main 方法是程序的入口方法,一个程序要想运行必须要有 main 方法,但是只有满足特定条件的 main 方法才能作为程序的入口方法。...对于选项 C,在 Java 语言中,不管方法体里有几条语句,所有的方法体都必须用大括号{}括起来。因此,选项 C 错误。

    74560

    【Java】理解条件判断语句的细节:“if”语句及其潜在问题

    分支: if (condition) { // 如果条件为真时执行的代码 } else { // 如果条件为假时执行的代码 } 在这个结构中,condition 是一个布尔表达式,if...如果没有使用大括号 {} 来明确区分各个代码块,程序就会根据就近原则来匹配 else 语句,可能会导致你预期之外的行为。...因为 else 是“就近”的,它只与最近的 if 配对。这意味着,如果 x == 10 成立且 y !...4. else 语句与条件块的逻辑关系 if 语句与 else 语句是成对出现的,else 语句表示如果 if 条件为 false 时执行的操作。...else 语句本身并不单独包含任何条件表达式,它总是与前面最近的 if 语句配对。因此,在使用 else 时,开发者必须小心,确保它与正确的 if 语句配对,以避免逻辑错误。 5.

    6810

    Google C++ 编程风格指南(八):格式

    左圆括号总是和函数名在同一行; 函数名和左圆括号间没有空格; 圆括号与参数间没有空格; 左大括号总在最后一个参数同一行的末尾处; 如果其它风格规则允许的话,右大括号总是单独位于函数最后一行,或者与左大括号同一行...右大括号和左大括号间总是有一个空格; 函数声明和定义中的所有形参必须有命名且一致; 所有形参应尽可能对齐; 缺省缩进为 2 个空格; 换行后的参数保持 4 个空格的缩进; 如果有些参数没有用到, 在函数定义处将参数名注释起来...如果能增强可读性, 简短的条件语句允许写在同一行....如果你喜欢用也没问题; 复杂的条件或循环语句用大括号可读性会更好....} 但如果语句中某个 if-else 分支使用了大括号的话, 其它分支也必须使用: Warning // 不可以这样子 - IF 有大括号 ELSE 却没有。

    1.7K30

    005.golang 控制语句

    判断语句if 条件表达式没有括号 支持一个初始化表达式(可以是并行方式) 左大括号必须和条件语句或else在同一行 支持单行模式 初始化语句中的变量为block级别,同时隐藏外部同名变量 package...可以是并行方式) if a, b := 1, 2; a > 0 { //左大括号必须和条件语句或else在同一行 //初始化语句中的变量为block级别,同时隐藏外部同名变量...fmt.Println(a, b) } else { //左大括号必须和条件语句或else在同一行 fmt.Println("nothing") } fmt.Println...使用函数,尽量提前计算好条件并以变量或常量代替 左大括号必须和条件语句在同一行 package main import ( "fmt" ) func main() { a := 1...不需要写break,一旦条件符合自动终止 如希望继续执行下一个case,需使用fallthrough语句 支持一个初始化表达式(可以是并行方式),右侧需跟分号 左大括号必须和条件语句在同一行 package

    30830

    JavaSE篇学习之路:(三)【流程控制语句】

    目录 第一章:三元运算符 1.1三元运算符格式 2.1运算原则 3.1举例 第二章:顺序结构 第三章:选择结构 1.1 if条件语句 1.2 if三种格式 2.1 switch多分枝语句 3.1 if与...既然是个运算符,那么运算完必须有运算结果。 1.1三元运算符格式 条件表达式?表达式1:表达式2 2.1运算原则 条件表达式 运算结果必须为boolean类型的值。...) { 执行语句; } else { 执行语句; } 执行说明:当if条件表达式为true时,执行if后面大括号中的语句,当if条件表达式为false时,执行else后面大括号中的语句。...切记,else后面的语句要能够执行,if中的条件表达式结果必须是false。...,会又回到while的条件表达式处再次判断,若还为true,就继续执行大括号中的语句,若为false就跳过大括号中的所有语句,继续往下执行。

    45930

    Java编程规范-命名与语句

    {} 包围, else 与 if 的右大括号位于同一行,使用空格分开; 示例: 【 错误用法】 if (condition) statement; 【正确用法】 if (condition) {...statement; } else if (condition) { statement; } else { statement; } 2、为提高代码可读性,便于理解,应保持判断方向与条件方向一致...; 2、while 语句与 do 的右大括号位于同一行,中间用空格分开。...包围, case 分支可以不使用大括号 {} 包围; 2、case 分支较 switch 语句缩进 4 个空格; 3、case 分支不应包含大段代码,如分支功能复杂,建议封装函数; 4、如果 case...{} 包围; 2、catch 语句与 try 的右大括号位于同一行,中间用空格隔开; 3、如果有 finally 分支, finally 语句与 try 或 catch 的右大括号位于同一行,中间用空格隔开

    45330

    PSR-12 编码规范扩充

    如果这样做,第一个条件 必须 在新的一行。右括号和左大括号 必须 在同一行,而且中间有一个空格。条件中间的布尔控制符 必须 在每一行的开头或者结尾,而不是混在一起。 1如果这样做,第一个条件 必须 在新的一行。右括号和左大括号 必须 在同一行,而且中间有一个空格。条件中间的布尔控制符 必须 在一行的开头或者结尾,而不是混在一起。 1如果这样做,第一个条件 必须 在新的一行。右括号和左大括号 必须 在同一行,而且中间有一个空格。条件中间的布尔控制符 必须 在每一行的开头或者结尾,而不是混在一起。 1如果这样做,第一个条件 必须 在新的一行。条件中间的布尔控制符 必须 在每一行的开头或者结尾,而不是混在一起。 1如果这样做,第一个条件 必须 在新的一行。右括号和左大括号 必须 在同一行,而且中间有一个空格。 1<?

    809110

    1:基本概念

    简介 dos命令 在dos直接输入javadoc、javac等命令会出现命令的使用方法 -d                    输出文件的目标目录 代码格式: 大括号对其:左大括号所在的一行和右大括号对齐...遇到左大括号时缩进:Tab或是shift+Tab,不要用空格缩,缩一格就行 程序块中加空行,如方法与方法之间,变量和方法之间加空行 并排语句中加空格 运算加空格,如int i = 1; 包 import...包与包之间的类进行访问,被访问的包中的类必须是public的,被访问的包中的类的方法也必须是public的。...3.异或( ^ )与或( | )的不同之处是:对于 ^ 而言,当左右都为true时,结果为false。 三元运算符 格式: (条件表达式)?...表达式1:表达式2; 如果条件为true,运算后的结果是表达式1; 如果条件为false,运算后的结果是表达式2; 三元运算符就是if else 语句简写格式。

    62870

    编程规范 写 if 语句不要任性

    控制语句的花样就多一点,也就是大家最常用的条件语句、循环语句语句。如果不加注意,就会遇到各种样式的ifelse。...我在编程规范_这个星球上最好的C编程风格提到的“几位前辈用连括号前一个空格都不放过的严谨让我受益匪浅”,讲的是关于if语句圆括号与左大括号的空格。很谢谢当时遇到的前辈,这情景现在还印象深刻。...if (x) DoThis(); else DoThat(); 通常,单行语句不需要使用大括号,如果你喜欢也无可厚非,也有人要求if必须使用大括号: if (condition) DoSomething...if (condition) { DoSomething(); // 2 space indent. } 但如果语句中哪一分支使用了大括号的话,其他部分也必须使用: // Not allowed...如果有不满足case枚举条件的值,要总是包含一个default(如果有输入值没有case去处理,编译器将报警)。

    2.2K30
    领券