| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> BI-SQL丨IN & EXISTS -> 正文阅读 |
|
[大数据]BI-SQL丨IN & EXISTS |
IN &?EXISTS IN和EXISTS,在子查询的过程中,二者可以说是SQL关键字中使用比较频繁的语句了,而且,在很多TA面试的时候,都会提问关于二者之间使用场景的区别。 之前在接触这部分知识点的时候,有的人说IN的性能更快,有的说EXISTS更快,其实这两种说法都不对,要看具体的应用场景的。 语法 IN子查询语法:
EXISTS子查询语法:
使用实例 案例数据: 在白茶本机的数据库中存在名为“CaseData”的数据库。 “Dim_Date“日期表、"Dim_Product"产品表、"Fact_Sales"销售事实表。 例子1: 查询产品表中,所有有销售事实的产品信息。
结果如下: 那么这段语法的执行顺序是什么? 子查询→内外表笛卡儿积→筛选 首先执行的是内部的子查询,先查找出在Fact事实表中存在的产品ID。 其次,外部产品表的所有列和事实表的查询结果生成一个笛卡尔积。 最后,进行条件筛选,查找出产品表ProductID与事实表ProductID相等结果记录。 因此,使用IN进行子查询,内部的表(即事实表)数据越小,速度越快。 例子2: 使用EXISTS执行上面的操作。
结果如下: EXISTS的执行顺序是这样的: 检测子查询的行→遍历循环外表→判断外表与子查询是否匹配 首先执行的是遍历循环外表(即产品表)。 然后判断外表(产品表)中的条件列是否与事实表中的条件列相匹配,如果匹配,则会出现在结果集中,否则不会出现在结果中。 因此,使用EXISTS进行查询的时候,通常是外表的数据越小,性能越快。
这里是白茶,一个PowerBI的初学者。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:33:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |